swing
gui是什么
java的gui发展
swing的常用组件
swing的布局
swing的事件
实现计算器&记事本
gui是什么
Graphical User Interface,主要用来实现桌面应用使用的技术,能够在桌面系统提供各种功能,比如:office,qq,浏览器等都算是桌面应用。
java的gui发展
awt->swing->SWT->jface
javafx
swing的常用组件
顶层容器
JFrame、JWindow、JDialog、JApplet
常用组件
JPanel 面板容器 除了顶层容器,其他的组件都可以装进去
JTextField 文本输入框 单行
JTextArea 文本域 多行
JPasswordField 密码框 输入的内容不直接显示
JButton 按钮
JRadioButton 单选
JCheckBox 复选
JComboBox 下拉框
JList 列表
JTree 树形组件
JLabel 标签 可以显示文本和图片
JMenuBar 菜单
JMenu 菜单
JMenuItem 菜单项
JScrollPane 滚动条
JOptionPane 弹窗
JFileChooser 文件选择器
JTable 表格
常用的布局
流式布局/线性布局
FlowLayout
JPanel panel = new JPanel();//默认是线性布局
FlowLayout mgr = new FlowLayout();
mgr.setVgap(10);
mgr.setHgap(20);
mgr.setAlignment(FlowLayout.RIGHT);//设置对齐方式
panel.setLayout(mgr);//设置布局
for (int i = 0; i < 20; i++) {
JButton button = new JButton("按钮" + i);
panel.add(button);
}
边框布局/四边布局
BorderLayout
BorderLayout borderLayout = new BorderLayout();
borderLayout.setHgap(hgap);
borderLayout.setVgap(vgap);
panel.setLayout(borderLayout);
JButton button = new JButton("北");
button.setPreferredSize(new Dimension(0, 40));
JButton button1 = new JButton("南");
JButton button2 = new JButton("西");
JButton button3 = new JButton("东");
JButton button4 = new JButton("中");
panel.add(button,BorderLayout.NORTH);
panel.add(button1,BorderLayout.SOUTH);
// panel.add(button2,BorderLayout.WEST);
panel.add(button3,BorderLayout.EAST);
panel.add(button4,BorderLayout.CENTER);
表格布局
GridLayout
panel.setLayout(new GridLayout(2, 3));
JButton button = new JButton("北");
JButton button1 = new JButton("南");
JButton button2 = new JButton("西");
JButton button3 = new JButton("东");
JButton button4 = new JButton("中");
panel.add(button);
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(button4);
绝对布局
以坐标的方式确定位置
panel.setLayout(null);
JButton button = new JButton("北");
button.setBounds(10, 10, 50, 30);
JButton button1 = new JButton("南");
button1.setBounds(80, 10, 50, 30);
JButton button2 = new JButton("西");
button2.setBounds(160, 80, 50, 30);
JButton button3 = new JButton("东");
button3.setBounds(340, 10, 50, 30);
JButton button4 = new JButton("中");
button4.setBounds(420, 10, 50, 30);
panel.add(button);
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(button4);
事件
event,事件有三大要素:事件源,事件对象,事件监听器
事件的类型很多
鼠标点击事件 click
键盘事件
窗口事件
JButton button = new JButton("北");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("点击了北");
}
});
button.setBounds(10, 10, 50, 30);
JButton button1 = new JButton("南");
button1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
System.out.println("鼠标点击了南");
if(e.getClickCount() == 2) {
System.out.println("双击了南");
}
if(e.getButton() == MouseEvent.BUTTON3) {
System.out.println("右键了鼠标");
}
}
});