文章目录
一、常用组件
1. JFrame
JFrame是Swing中最常用的顶级容器,它用于包含和管理其他Swing组件。JFrame提供了一些常用的方法,如setTitle()、setDefaultCloseOperation()、setResizable()、setVisible()等等,用于控制窗口的外观和行为。
2. JPanel
JPanel是Swing中常用的容器组件,用于将其他Swing组件放置在一起,形成一个组件集合。JPanel可以嵌套在其他容器中,如JFrame、JDialog等等。
3. JLabel
JLabel是Swing中用于显示文本或图像的组件,它可以用于显示静态的提示信息或标签等等。JLabel提供了一些常用的方法,如setText()、setIcon()、setHorizontalAlignment()等等,用于控制标签的文本和图像内容以及对齐方式等。
4. JTextField
JTextField是Swing中用于接收单行文本输入的组件,它可以用于输入和显示文本信息。JTextField提供了一些常用的方法,如setText()、getText()、setEditable()等等,用于控制文本框的内容和可编辑性等。
5. JButton
JButton是Swing中用于响应用户单击操作的组件,它可以用于触发相应的事件处理程序,如打开一个文件、执行计算等等。JButton提供了一些常用的方法,如setText()、setMnemonic()、addActionListener()等等,用于控制按钮的文本、快捷键和事件监听等。
6. JCheckBox
JCheckBox是Swing中用于提供复选框选项的组件,它可以用于让用户选择多个选项。JCheckBox提供了一些常用的方法,如setText()、isSelected()、addItemListener()等等,用于控制复选框的文本和选中状态以及事件监听等。
7. JRadioButton
JRadioButton是Swing中用于提供单选框选项的组件,它可以用于让用户从多个选项中选择一个。JRadioButton提供了一些常用的方法,如setText()、isSelected()、addItemListener()等等,用于控制单选框的文本和选中状态以及事件监听等。
8. JComboBox
JComboBox是Swing中用于提供下拉列表选项的组件,它可以用于让用户从多个选项中选择一个。JComboBox提供了一些常用的方法,如addItem()、setSelectedIndex()、addActionListener()等等,用于控制下拉列表的选项和选中状态以及事件监听等。
9. JList
JList是Swing中用于显示列表项的组件,它可以用于显示多个选项并允许用户进行选择。JList提供了一些常用的方法,如setListData()、getSelectedValue()、addListSelectionListener()等等,用于控制列表项的数据和选中值以及事件监听等。
(一)JPanel中常用方法
JPanel提供了一些常用的方法,如add()、remove()、setLayout()、getPreferredSize()等等,用于控制面板中的组件和布局方式以及尺寸等。下面是一些常用的方法介绍:
- add(Component comp) 该方法用于向面板中添加一个组件,其中 comp 表示要添加的组件。该方法还可以接受一个整数参数,用于指定组件的索引位置。例如,panel.add(button)将向面板中添加一个按钮组件。
- remove(Component comp) 该方法用于从面板中删除一个组件,其中comp表示要删除的组件。例如,panel.remove(button)将从面板中删除一个按钮组件。
- setLayout(LayoutManager manager) 该方法用于设置面板的布局管理器,其中manager表示要使用的布局管理器。例如,panel.setLayout(new BorderLayout())将设置面板的布局管理器为边界布局管理器。
- getPreferredSize() 该方法用于获取面板的首选大小,即面板的推荐尺寸。例如,Dimension size = panel.getPreferredSize()将获取面板的首选大小,并将其存储在一个Dimension对象中。
需要注意的是,JPanel默认使用流式布局管理器FlowLayout,该布局管理器按照添加顺序排列组件,并根据组件的首选大小自动调整其位置和大小。如果需要使用其他布局管理器,需要通过setLayout()方法来设置。
另外,JPanel还可以使用setBorder()方法来设置面板的边框样式,使用setBackground()方法来设置面板的背景色等等。JPanel的灵活性和多功能性使得它成为Swing界面设计中不可或缺的一部分。
(二)使用JPanel的场景如下
- 实现复杂的布局 当需要将多个Swing组件组合在一起,并且需要进行复杂的布局时,可以使用JPanel。JPanel可以嵌套在其他容器中,如JFrame、JDialog等等,并且可以使用不同的布局管理器来控制子组件的位置和大小,以实现各种复杂的布局效果。
- 分组显示相关组件 当需要将多个相关的Swing组件放置在一起,并对其进行分组显示时,可以使用JPanel。例如,一个包含多个按钮和标签的设置面板,可以将按钮和标签分别放置在不同的JPanel中,并将它们嵌套在同一个容器中。
- 显示动态的组件 当需要动态地添加、删除或更改组件时,可以使用JPanel。JPanel提供了add()、remove()等方法,可以方便地添加和删除子组件,并且可以使用repaint()方法来强制刷新面板中的所有组件,以实现动态的显示效果。
- 实现重用的自定义组件 当需要创建可重用的自定义组件时,可以使用JPanel。JPanel可以作为自定义组件的基础容器,可以将其他Swing组件放置在其中,并将其封装为一个独立的可重用组件,以方便在不同的应用程序中进行复用。
总的来说,JPanel是Swing中常用的容器组件,用于将其他Swing组件放置在一起,形成一个组件集合。它可以嵌套在其他容器中,如JFrame、JDialog等等,并且可以用于实现复杂的布局、分组显示相关组件、显示动态的组件以及实现重用的自定义组件等等。
(三)常用布局管理器
Java提供了多种布局管理器,用于控制组件在容器中的排列方式。以下是一些常用的布局管理器:
1. BorderLayout
描述:将容器分成5个区域:北、南、东、西和中心,各个组件可以填充其中一个或多个区域。
使用场景:适合用于将组件分割成不同的区域。
代码示例:
JFrame frame =newJFrame("BorderLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(newBorderLayout());
frame.add(newJButton("North"), BorderLayout.NORTH);
frame.add(newJButton("South"), BorderLayout.SOUTH);
frame.add(newJButton("East"), BorderLayout.EAST);
frame.add(newJButton("West"), BorderLayout.WEST);
frame.add(newJButton("Center"), BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
2. FlowLayout
描述:按照添加组件的顺序,从左往右依次排列组件,如果一行排不下就自动换行。
使用场景:适合用于流式布局,将组件一行一行地排列。
代码示例:
JFrame frame =newJFrame("FlowLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(newFlowLayout());
frame.add(newJButton("Button 1"));
frame.add(newJButton("Button 2"));
frame.add(newJButton("Button 3"));
frame.pack();
frame.setVisible(true);
\```
### 3. GridLayout
**描述**:将容器分成指定的行数和列数的网格,组件按照顺序填充到每个单元格中。
**使用场景**:适合用于按网格布局排列组件。
**代码示例**:
```java
JFrame frame =newJFrame("GridLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(newGridLayout(3,2));
frame.add(newJButton("Button 1"));
frame.add(newJButton("Button 2"));
frame.add(newJButton("Button 3"));
frame.add(newJButton("Button 4"));
frame.add(newJButton("Button 5"));
frame.add(newJButton("Button 6"));
frame.pack();
frame.setVisible(true);
4. CardLayout
描述:将容器中的组件按照卡片的方式进行切换,每次只显示其中一个组件。
使用场景:适合用于在多个组件之间进行切换。
代码示例:
JFrame frame =newJFrame("CardLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
CardLayout cardLayout =newCardLayout();
frame.setLayout(cardLayout);
frame.add(newJLabel("Card 1"),"card1");
frame.add(newJLabel("Card 2"),"card2");
frame.pack();
frame.setVisible(true);// 切换到下一张卡片
cardLayout.next(frame.getContentPane());
5. BoxLayout
描述:将组件按照水平或垂直方向进行排列,可以指定每个组件的最小和最大尺寸。
使用场景:适合按照水平或垂直方向排列组件,并指定最小和最大尺寸。
代码示例:
JFrame frame =newJFrame("BoxLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(newBoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
frame.add(newJButton("Button 1"));
frame.add(newJButton("Button 2"));
frame.add(newJButton("Button 3"));
frame.pack();
frame.setVisible(true);
6. GridBagLayout
描述:一种灵活的布局管理器,可以为组件指定行、列、宽度、高度、填充方式等属性。
使用场景:适合用于实现更复杂的布局需求。
代码示例:
JFrame frame =newJFrame("GridBagLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(newGridBagLayout());
GridBagConstraints constraints =newGridBagConstraints();// 添加 Button 1
constraints.gridx =0;
constraints.gridy =0;
constraints.gridwidth =1;
constraints.gridheight =1;
constraints.fill = GridBagConstraints.HORIZONTAL;
frame.add(newJButton("Button 1"), constraints);// 添加 Button 2
constraints.gridx =1;
constraints.gridy =0;
constraints.gridwidth =1;
constraints.gridheight =1;
constraints.fill = GridBagConstraints.HORIZONTAL;
frame.add(newJButton("Button 2"), constraints);// 添加 Button 3
constraints.gridx =0;
constraints.gridy =1;
constraints.gridwidth =2;
constraints.gridheight =1;
constraints.fill = GridBagConstraints.HORIZONTAL;
frame.add(newJButton("Button 3"), constraints);
frame.pack();
frame.setVisible(true);
以上就是Java中常用的布局管理器。
二、常用事件处理响应
Java的Listener是用于事件处理的一种机制,主要用于接收和处理用户界面上的各种事件。下面介绍一些常用的Listener方法和接口:
ActionListener接口:用于处理按钮、菜单等组件的动作事件。
MouseListener接口:用于处理鼠标事件,如鼠标单击、鼠标移动等。
KeyListener接口:用于处理键盘事件,如键盘按下、键盘释放等。
FocusListener接口:用于处理焦点事件,如组件获得焦点、组件失去焦点等。
ItemListener接口:用于处理复选框和单选按钮的选择事件。
WindowListener接口:用于处理窗口事件,如窗口打开、窗口关闭等。
三、上面接口对应的适配器(减少接口中方法的重写)
在Java中,适配器类是一种实现某个接口但并不完全实现该接口的类。它可以作为接口的中间层,使得我们在实现接口方法时,只需要重写自己需要的方法,而不需要全部重写。常见的适配器类包括:
MouseAdapter类:实现了MouseListener和MouseWheelListener接口,但其中的方法都是空实现,方便我们使用时只重写需要的方法。
KeyAdapter类:实现了KeyListener接口,但其中的方法都是空实现我们使用时只重写需要的方法。
WindowAdapter类:实现了WindowListener接口和WindowFocusListener接口,但其中的方法都是空实现,方便我们使用时只重写需要的方法。
ComponentAdapter类:实现了ComponentListener接口,但其中的方法都是空实现,方便我们使用时只重写需要的方法。
ContainerAdapter类:实现了ContainerListener接口,但其中的方法都是空实现,方便我们使用时只重写需要的方法。
FocusAdapter类:实现了FocusListener接口,但其中的方法都是空实现,方便我们使用时只重写需要的方法。
适配器类的作用是让我们在实现接口的时候不必重写全部的方法,而只需要重写我们需要的方法。这样能够减少代码的冗余,提高代码的可读性和可维护性。
四、常用函数方法
以下是一些在Java图形界面编程中常用的函数方法:
1. setText()
setText()
方法用于设置组件内的文字内容。可以应用到诸如
JTextField
、
JButton
、
JLabel
等组件上。
示例:设置
JTextField
中的文本内容。
JTextField text =newJTextField();
text.setText("请输入");
此时,text文本框内将显示“请输入”。
2. getText()
getText()方法用于提取组件内的文字。通常用于获取用户在文本框中输入的内容。
示例:从JTextField中提取输入的文本。
String input = text.getText();
3. add()
add()方法用于向容器(如JPanel和JFrame)中添加组件。
示例:向JPanel中添加一个按钮。
JPanel panel =newJPanel();
JButton button =newJButton("点击我");
panel.add(button);
4. 创建并设置基本的图形界面
以下代码展示了创建一个基本的图形界面所需的必要步骤
// 创建一个JFrame窗口并设置标题
JFrame frame =newJFrame("图形界面示例");// 设置窗口大小
frame.setSize(450,350);// 设置窗口关闭操作,关闭窗口时终止程序
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 在此处添加组件和设置布局管理器...// 设置窗口可见性,否则运行时看不到窗口
frame.setVisible(true);
版权归原作者 PlatinumA 所有, 如有侵权,请联系我们删除。