Java 图形化界面(GUI)编程允许开发者创建具有可视化元素和用户交互功能的应用程序。Swing 是 Java 中用于构建图形化界面的一个重要工具包。
使用 Swing 可以创建各种组件,如窗口(JFrame)、按钮(JButton)、文本框(JTextField)、标签(JLabel)等。通过合理组合和布局这些组件,可以设计出满足不同需求的界面。
以下是一个使用 Java Swing 创建图形化界面的简单示例代码,展示了如何创建一个带有按钮的窗体。
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JPanel;
public class SwingExample {
public static void main(String[] args) {
// 创建一个顶层容器(窗口)
JFrame frame = new JFrame("示例窗口");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
// 创建中间容器(面板容器),使用默认的布局管理器
JPanel panel = new JPanel();
// 创建一个基本组件(按钮),并添加到面板容器中
JButton button = new JButton("点击我");
panel.add(button);
// 把面板容器作为窗口的内容面板设置到窗口
frame.setContentPane(panel);
// 设置窗口可见
frame.setVisible(true);
}
}
上述代码中,首先创建了一个JFrame对象作为窗口。通过setDefaultCloseOperation方法设置了窗口关闭时的默认操作,这里使用JFrame.EXIT_ON_CLOSE表示关闭窗口时setDefaultCloseOperation退出程序。使用setSize方法设置了窗口的大小。
然后创建了一个JPanel对象作为中间容器,它可以用来添加其他组件。
接着创建了一个JButton对象作为按钮,并通过add方法将其添加到JPanel中。
最后,使用setContenPane方法将JPanel设置为窗口的内容面板,并使用setVisible(true)方法使窗口可见。
这只是一个简单的示例,Swing 还提供了多种布局管理器、其他组件以及事件处理机制等,可以实现更复杂的图形化界面。
例如,Swing 中常用的布局管理器包括流式布局(FlowLayout)、网格布局(GridLayout)、边界布局(BorderLayout)等。以下是使用流式布局和网格布局的示例代码:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.FlowLayout;
public class FlowLayoutExample {
public static void main(String[] args) {
JFrame frame = new JFrame("流式布局示例");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new FlowLayout()); // 创建内容面板,指定使用流式布局
JButton btn01 = new JButton("按钮 01");
JButton btn02 = new JButton("按钮 02");
JButton btn03 = new JButton("按钮 03");
JButton btn04 = new JButton("按钮 04");
JButton btn05 = new JButton("按钮 05");
panel.add(btn01);
panel.add(btn02);
panel.add(btn03);
panel.add(btn04);
panel.add(btn05);
frame.setContentPane(panel);
frame.setSize(200, 250);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
在上述代码中,创建了一个使用流式布局的JPanel,组件会按照从左到右、从上到下的顺序排列。
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.GridLayout;
public class GridLayoutExample {
public static void main(String[] args) {
// 创建 3 行 3 列的网格布局
GridLayout layout = new GridLayout(3, 3);
JPanel panel = new JPanel(layout);
JButton btn01 = new JButton("按钮 01");
JButton btn02 = new JButton("按钮 02");
JButton btn03 = new JButton("按钮 03");
JButton btn04 = new JButton("按钮 04");
JButton btn05 = new JButton("按钮 05");
JButton btn06 = new JButton("按钮 06");
JButton btn07 = new JButton("按钮 07");
JButton btn08 = new JButton("按钮 08");
panel.add(btn01);
panel.add(btn02);
panel.add(btn03);
panel.add(btn04);
panel.add(btn05);
panel.add(btn06);
panel.add(btn07);
panel.add(btn08);
JFrame frame = new JFrame("网格布局示例");
frame.setContentPane(panel);
frame.setSize(200, 250);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
在这个示例中,创建了一个 3 行 3 列的网格布局对象,并将其应用于JPanel。然后向JPanel中添加了 8 个按钮,它们会按照网格的形式排列。