📜  SWING-控件(1)

📅  最后修改于: 2023-12-03 15:20:25.616000             🧑  作者: Mango

SWING控件介绍

简介

SWING是Java平台的GUI工具包,它包含一系列的用户界面控件,提供了创建丰富多彩的GUI界面的能力。SWING控件可用于创建桌面应用程序和applet,并可以运行在Windows、Macintosh和Linux等不同的操作系统上。

SWING控件的特点包括:可伸缩性、轻量级、可定制性、可扩展性和可移植性等。

常用控件
JLabel

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
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是一个用于输入文本的控件,它支持文本长度限制、文本选择和聚焦等特性。

// 创建一个文本框
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是一个用于选择一项或多项的控件,它支持文本、状态和事件等特性。

// 创建一个复选框
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是一个用于从一组中选择一项的控件,它支持文本、状态和事件等特性。

// 创建一组单选框
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);
参考资料