Java Swing是Java编程语言的GUI工具包,是用于写图形用户界面(GUI)的最常用工具之一。它相比其他GUI工具更加易用,通过引入图形用户界面,可以让Java应用程序变得更加完善和易用。今天,我们准备为大家介绍一篇从入门到精通的Java Swing教程。
首先,我们需要了解一些有关Java Swing的背景知识。Java Swing是由Sun Microsystems开发的,是Java语言提供的图形用户界面工具包。Swing是一个跨平台的GUI工具包,可以在不同操作系统上运行相同的Java应用程序。Swing图形用户界面是基于Java的“轻量级”组件,不依赖于原本不同操作系统的本地GUI组件库。
随着Java的发展以及应用程序变得更加复杂,Swing工具包应运而生。与其他GUI工具相比,Swing组件更加易用、可靠且稳定。Swing中的组件可以捕捉用户输入事件并触发相应的动作,同时也支持风格和主题的自定义设置。
接下来,让我们来了解一些Java Swing教程中需要掌握的关键概念。
1.组件(Container)
组件是Swing用户界面的基础单位,它可以是由其他组件组成的容器,也可以是最终的用户接口元素。例如:按钮、文本框、标签、文本区域、滚动端和列表等。
2.布局(LayoutManager)
Swing提供了多种布局管理器,用于组件在面板上的位置和大小控制。使用不同的布局管理器可以获得不同的外观和功能。
3.事件(Event)
Swing中的事件是用户操作的基本单位,例如:键盘按键、鼠标的单、双击以及拖放等。使用事件监听器来检索事件并识别它们是Java Swing操作的核心。
4.模型要素
模型是根据Swing模型区分的核心元素之一。模型用于将Swing中的用户数据呈现给GUI组件。如果您的数据发生更改或需要重新呈现,Swing模型也会随之更改。
接下来,让我们来学习一些Java Swing的基本内容。
1.创建Swing窗口
要提供GUI的Java应用程序首先需要创建一个窗口。以下代码演示了如何在Java Swing中创建一个窗口和一个按钮:
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.FlowLayout;
public class SwingWindowExample {
public static void main(String[] args) {
JFrame window = new JFrame("Java Swing Window");
window.setLayout(new FlowLayout());
JButton button = new JButton("Click me!");
window.add(button);
window.setSize(400, 300);
window.setLocationRelativeTo(null);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
}
如上所示,我们使用JFrame类创建了一个名为Java Swing窗口的新窗口。然后,通过setLayout()方法将布局设置为FlowLayout,这意味着组件将按照它们添加的顺序排列。在后续生成按钮操作时可以看到。
我们创建了一个新的按钮并使用add()方法添加到窗口的内容面板中。然后设置了窗口的大小、位置,设置了窗口的默认退出行为,并且最后让窗口可见。
2.使用事件监听器
Java Swing窗口只是一个空的窗口,要使它真正变得强大、有趣和有用,必须与事件监听器一起使用。以下代码片段显示了如何在Java Swing中使用事件监听器:
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SwingButtonClickExample {
public static void main(String[] args) {
JFrame window = new JFrame("Java Swing Window");
window.setLayout(new FlowLayout());
JButton button = new JButton("Click me!");
window.add(button);
ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "You clicked the button.");
}
};
button.addActionListener(listener);
window.setSize(400, 300);
window.setLocationRelativeTo(null);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
}
如上所示,我们通过创建一个名为ActionListener的匿名内部类来实现事件监听器。然后,在按钮上添加了这个ActionListener对象,当该按钮被单击时,将显示一个消息对话框。
3.使用布局管理器
前面我们提到,Swing提供了多种布局管理器,用于组件在面板上的位置和大小控制。展示以下示例代码:
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.GridLayout;
public class SwingGridLayoutExample {
public static void main(String[] args) {
JFrame window = new JFrame("Java Swing Window");
window.setLayout(new GridLayout(0, 2));
JButton button1 = new JButton("Button 1");
window.add(button1);
JButton button2 = new JButton("Button 2");
window.add(button2);
JButton button3 = new JButton("Button 3");
window.add(button3);
JButton button4 = new JButton("Button 4");
window.add(button4);
window.setSize(400, 300);
window.setLocationRelativeTo(null);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
}
如上所示,我们使用GridLayout布局管理器创建了一个新窗口。GridLayout排序与文本列表和电子表格类似,从左到右,从上到下,将组件放置在矩形网格中。网格中的行和列可以根据需要设置。
4.使用组合框
其实在实际生产中我们会经常使用组合框。组合框可以是单个文本字段或按钮,我们可以通过单击按钮或输入文本内容来触发下拉选项列表。以下代码是下拉选择框的Java Swing代码示例:
import javax.swing.JFrame;
import javax.swing.JComboBox;
public class SwingComboBoxExample {
public static void main(String[] args) {
JFrame window = new JFrame("Java Swing Window");
window.setLayout(new FlowLayout());
String[] options = { "Option 1", "Option 2", "Option 3", "Option 4" };
JComboBox
window.add(dropdown);
window.setSize(400, 300);
window.setLocationRelativeTo(null);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
}
如上所示,我们创建了一个名为SwingComboBoxExample的下拉选择框示例。我们使用JComboBox类创建了一个新的下拉选择框,将可选项数组传递给该类的构造函数并将其添加到窗口面板中。最后设置窗口的大小、位置、默认退出行为并让窗口可见。
总结:本文简单介绍了Java Swing的一些基础知识和示例,从创建Swing窗口、使用事件监听器、使用布局管理器到使用组合框,您将明白动手编写Swing应用程序的主要步骤,并对Java Swing的开发有一个大致的了解,同时在Java桌面应用程序领域里拥有了有扎实的入门基础。