📅  最后修改于: 2023-12-03 15:28:06.635000             🧑  作者: Mango
Swing是Java平台的一套GUI工具集,提供了许多用于创建图形用户界面(GUI)的组件和工具。Swing被设计成高度可定制,程序员可以使用它来创建各种各样的应用程序,从简单的工具到复杂的桌面应用程序。
Swing提供了许多常见的组件,如按钮、文本框、标签、列表框、下拉框、复选框、单选按钮等等。除此之外,Swing还提供了一些高级组件,如表格、树形控件、轮廓组件等等。这些组件都可以自由组合,形成各种各样的可视化界面。
下面是一个简单的Swing应用程序,包含一个按钮和一个文本框。
import javax.swing.*;
public class SimpleSwingApplication {
public static void main(String[] args) {
JFrame frame = new JFrame("Simple Swing Application");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JButton button = new JButton("Click Me!");
JTextArea textArea = new JTextArea(10, 30);
button.addActionListener(e -> textArea.setText("Hello, Swing!"));
panel.add(button);
panel.add(textArea);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
Swing的布局管理器用于控制组件的位置和大小。Swing提供了多种布局管理器,包括FlowLayout
、BorderLayout
、GridLayout
、BoxLayout
等等。每种布局管理器都有其独特的特点和用途,程序员可以根据需求选择合适的布局管理器。
下面是一个使用BorderLayout
布局管理器的Swing应用程序,包含一个按钮和一个文本框。
import javax.swing.*;
public class BorderLayoutExample {
public static void main(String[] args) {
JFrame frame = new JFrame("BorderLayout Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel(new BorderLayout());
JButton button = new JButton("Click Me!");
JTextArea textArea = new JTextArea(10, 30);
button.addActionListener(e -> textArea.setText("Hello, Swing!"));
panel.add(button, BorderLayout.PAGE_START);
panel.add(textArea, BorderLayout.CENTER);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
渲染器用于将数据转换为可视化组件。Swing提供了许多渲染器,包括DefaultListCellRenderer
、DefaultTreeCellRenderer
、DefaultTableCellRenderer
等等。程序员可以自定义渲染器来满足特殊的需求。
下面是一个使用自定义渲染器的Swing应用程序,包含一个列表框和一个文本框。列表框中显示了一组数据,其中偶数项使用默认渲染器,奇数项使用自定义渲染器。
import javax.swing.*;
public class RendererExample {
public static void main(String[] args) {
JFrame frame = new JFrame("Renderer Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
JList<String> list = new JList<>(new String[]{"Apple", "Banana", "Cherry", "Grape", "Lemon"});
list.setCellRenderer(new EvenOddRenderer());
JTextArea textArea = new JTextArea(10, 30);
list.addListSelectionListener(e -> {
String selectedItem = list.getSelectedValue();
textArea.setText(selectedItem);
});
panel.add(new JScrollPane(list));
panel.add(textArea);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);
}
}
class EvenOddRenderer extends DefaultListCellRenderer {
@Override
public java.awt.Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
java.awt.Component renderer = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (index % 2 == 0) {
renderer.setBackground(java.awt.Color.LIGHT_GRAY);
} else {
renderer.setBackground(java.awt.Color.WHITE);
}
return renderer;
}
}
Swing是Java平台的一套GUI工具集,可以用来创建各种各样的应用程序。Swing提供了许多常见的组件、布局管理器和渲染器,程序员可以根据需求选择合适的组件和工具。Swing还提供了高度可定制的特性,程序员可以自定义组件的样式、布局和渲染方式,满足特殊的需求。