📅  最后修改于: 2023-12-03 15:20:25.616000             🧑  作者: Mango
SWING是Java平台的GUI工具包,它包含一系列的用户界面控件,提供了创建丰富多彩的GUI界面的能力。SWING控件可用于创建桌面应用程序和applet,并可以运行在Windows、Macintosh和Linux等不同的操作系统上。
SWING控件的特点包括:可伸缩性、轻量级、可定制性、可扩展性和可移植性等。
JLabel是一个用于显示文本或图像的控件,它支持HTML标记、图标和垂直/水平对齐等特性。
// 创建一个包含文本的JLabel
JLabel label = new JLabel("Hello, World!");
// 创建一个包含图像的JLabel
URL imageUrl = new URL("https://example.com/image.png");
Icon icon = new ImageIcon(imageUrl);
JLabel label = new JLabel(icon);
JButton是一个用于触发操作的控件,它支持文本、图标和快捷键等特性。
// 创建一个带有文本的JButton
JButton button = new JButton("Click me!");
// 创建一个带有图标和文本的JButton
URL imageUrl = new URL("https://example.com/image.png");
Icon icon = new ImageIcon(imageUrl);
JButton button = new JButton("Click me!", icon);
// 添加一个事件监听器
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 处理点击事件
}
});
JTextField是一个用于输入文本的控件,它支持文本长度限制、文本选择和聚焦等特性。
// 创建一个文本框
JTextField textField = new JTextField();
// 设置文本框的初始值和最大长度
textField.setText("Hello, World!");
textField.setDocument(new PlainDocument() {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
if (getLength() + str.length() <= 10) {
super.insertString(offs, str, a);
}
}
});
JCheckBox是一个用于选择一项或多项的控件,它支持文本、状态和事件等特性。
// 创建一个复选框
JCheckBox checkBox = new JCheckBox("Check me!");
// 获取或设置复选框的状态
boolean isChecked = checkBox.isSelected();
checkBox.setSelected(true);
// 添加一个事件监听器
checkBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// 处理选中状态改变事件
}
});
JRadioButton是一个用于从一组中选择一项的控件,它支持文本、状态和事件等特性。
// 创建一组单选框
JRadioButton radioButton1 = new JRadioButton("Option 1");
JRadioButton radioButton2 = new JRadioButton("Option 2");
// 设置单选框为互斥的
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(radioButton1);
buttonGroup.add(radioButton2);
// 获取或设置单选框的状态
boolean isSelected = radioButton1.isSelected();
radioButton2.setSelected(true);
// 添加一个事件监听器
radioButton1.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// 处理选中状态改变事件
}
});
SWING控件的布局由布局管理器决定,常见的布局管理器包括:BorderLayout、FlowLayout、GridLayout和GridBagLayout等。布局管理器可以决定控件在容器中的位置、大小和排列方式等。
// 使用BorderLayout布局管理器
JFrame frame = new JFrame("My Frame");
frame.setLayout(new BorderLayout());
JButton button1 = new JButton("Left");
frame.add(button1, BorderLayout.WEST);
JButton button2 = new JButton("Right");
frame.add(button2, BorderLayout.EAST);
JLabel label = new JLabel("Center");
frame.add(label, BorderLayout.CENTER);