Swing常用组件


前言

推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。
https://www.captainbed.cn/f1

Swing常用组件包括多种界面元素,如按钮、文本框、标签、列表框等,用于构建图形用户界面(GUI)。这些组件提供了丰富的交互功能和可视化效果,使得Swing成为Java GUI开发的重要工具。


一、标签

Swing的 JLabel 类对 AWT 的 Label 类进行功能扩展,创建的标签不仅可以显示文本字符,而且可以显示图标。JLabel 类的构造方法(见表)进行了6次重线,可以创建各种标签

JLabel 类的构造方法

构造方法描述
JLabel()实例化空标签对象
JLabel(Icon image)实例化指定图标的标签对象
JLabel(Icon image, int horizontalAlignment)实例化标签对象,指定图标、水平对齐方式
JLabel(String text)实例化指定文本的标签对象
JLabel(String text, Icon icon, int horizontalAlignment)实例化标签对象,指定文本、图标、水平对齐方式
JLabel(String text, int horizontalAlignment)实例化标签对象,指定文本、水平对齐方式

对于文本,JLabel 提供了不同于 Label的成员方法设置对齐方式,可以分垂直和水平两个方向;操作文本内容的成员方法与Label类似。在对图标的操作上,JLabel 提供了相应的setter和getter方法。

JLabel常用成员方法

成员方法描述
getHorizontalAlignment()/getAlignmentX()获取文本的水平对齐方式
getlcon()获取标签上的图标
getText()获取标签上的文本
getVerticalAlignment()/getAlignmentY()获取文本的垂直对齐方式
setHorizontalAlignment(int alignment)/setAlignmentX()设置文本的水平对齐方式
setlcon(Icon icon)设置标签上的图标
setText(String text)设置标签上的文本
setVerticalAlignment(int alignment)/ setAlignmentY()设置文本的垂直对齐方式

JLabel 从接口 SwingConstants 继承了若干静态常量形式的成员属性,用于设置文本的对齐方式。用于水平对齐方式的有LEFTCENTER (标签只有图标时的默认对齐方式)、RIGHTLEADING(标签只有文本时的对齐方式),以及 TRAILING。用于垂直对齐方式的有 TOPCENTER (默认的),以及BOTTOM.

代码示例

示例一

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class IconLabelExample {
    public static void main(String[] args) {
        // 创建一个JFrame窗口
        JFrame frame = new JFrame("Icon Label Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);

        // 创建一个带图标的JLabel
        ImageIcon icon = new ImageIcon("path/to/your/image.png"); // 替换为你自己的图像路径
        JLabel label = new JLabel(icon);

        // 将JLabel添加到JFrame窗口中
        frame.getContentPane().add(label);

        // 显示窗口
        frame.setVisible(true);
    }
}

示例二

getClass()

在Java中,getClass()Object类的一个方法,它返回对象的运行时类。

每个Java对象都继承了Object类,并因此继承了getClass()方法。这个方法的返回值是一个Class对象,它提供了有关对象所属类的信息。Class类有许多有用的方法,可以用来获取类的名称、包名、超类等信息,还可以通过反射来获取类的字段、方法和构造函数等。

以下是一个示例代码,展示了如何使用getClass()方法来获取对象的运行时类:

public class Main {
    public static void main(String[] args) {
        String str = "Hello World";
        Class<?> clazz = str.getClass();
        System.out.println("运行时类名称:" + clazz.getName());
    }
}

在这个示例中,我们创建了一个String对象str,然后使用getClass()方法获取该对象的运行时类。通过调用getName()方法,我们可以获取类的名称并打印出来。

输出结果为:

运行时类名称:java.lang.String

这个示例只是展示了getClass()方法的基本用法,实际上它还可以应用于其他类型的对象,例如自定义类的对象。

使用getClass()与getResource()配合使用,可以获取当前类包所在路径的资源文件的URL

import java.awt.*;
import javax.swing.*;
import java.net.*;

public class test {
    public void main(String[] args) {
        // 创建一个JFrame窗口
        JFrame frame = new JFrame("Icon Label Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);

        URL u1 = getClass().getResource("China.png");
        //也可以写成u1 = test.class.getResource("China.png");
        Icon i1 = new ImageIcon(u1);
        JLabel l1 = new JLabel(i1);
        l1.setOpaque(true);//JLabel标签默认是透明的,设置为非透明
        // 将JLabel添加到JFrame窗口中
        frame.getContentPane().add(l1);

        // 显示窗口
        frame.setVisible(true);
    }
}

二、按钮(JButton)

Swing 的 JButton 类对 AWT 的Button 类进行功能扩展,创建的按钮不仅可以显示文本标签,而且可以显示图标

JButton构造方法

JButton类的构造方法有多个:

  • JButton():创建一个默认没有文本和图标的按钮。
  • JButton(Icon icon):创建一个带有指定图标的按钮。
  • JButton(String text):创建一个带有指定文本的按钮。
  • JButton(String text, Icon icon):创建一个带有指定文本和图标的按钮。
  • JButton(Action a):创建一个使用指定Action对象的按钮。
  • JButton(String text, Icon icon, int mnemonic):创建一个带有指定文本、图标和助记键的按钮。助记键是一个与按钮相关联的键盘按键,可以通过按下该按键触发按钮的点击事件。
  • JButton(String text, int mnemonic):创建一个带有指定文本和助记键的按钮。

JButton常用成员函数方法

JButton类是Swing组件库中的一个按钮组件,常用成员方法如下:

  1. JButton(String text):使用指定的文本创建一个新按钮。

  2. void addActionListener(ActionListener listener):将指定的动作侦听器添加到按钮上。

  3. void setText(String text):设置按钮上显示的文本。

  4. void setIcon(Icon icon):设置按钮上显示的图标。

  5. void setEnabled(boolean enabled):设置按钮是否启用。

  6. void setToolTipText(String text):设置按钮的工具提示文本。

  7. void setMnemonic(int key):设置按钮的快捷键字符。

  8. void setBounds(int x, int y, int width, int height):设置按钮的位置和大小。

  9. void setBackground(Color color):设置按钮的背景颜色。

  10. void setForeground(Color color):设置按钮的前景颜色。

代码示例

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class JButtonExample {

    public static void main(String[] args) {
        // 创建一个 JFrame 对象
        JFrame frame = new JFrame("JButton Example");

        // 创建一个 JButton 对象
        JButton button = new JButton("Click me");

        // 设置按钮的位置和大小
        button.setBounds(100, 100, 100, 50);

        // 添加按钮的动作侦听器
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 当按钮被点击时,执行这里的代码
                System.out.println("Button clicked");
            }
        });

        // 将按钮添加到窗口中
        frame.add(button);

        // 设置窗口的大小和关闭操作
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 显示窗口
        frame.setVisible(true);
    }
}

三、文本框(JTextField)

Swing 中通过类 JTextField 实例化文本框对象,该类继承自类 JTextComponent。该类在创建文本框时,与AWT 的 TextField 一样,可以设置文本框内的初始文本内容、文本框的长度等。

Swing 为 JTextField 定义了一个子类 JPasswordField,专门用来输入“密码”的单行文本框;即对用户输入的字符采用密文的形式进行显示,如“****”。JPasswordField 在继承 JTextField 成员方法的基础上,还提供了成员方法 setEchoChar(),用来改变密码框的回显字符。

JTextField构造方法

JTextField类有以下构造方法:

  1. JTextField(): 创建一个没有文本的JTextField对象。
JTextField textField = new JTextField();
  1. JTextField(int columns): 创建一个具有指定列数的JTextField对象。
JTextField textField = new JTextField(10); // 创建一个具有10个列的JTextField对象
  1. JTextField(String text): 创建一个具有指定文本的JTextField对象。
JTextField textField = new JTextField("Hello World"); // 创建一个带有文本"Hello World"的JTextField对象
  1. JTextField(String text, int columns): 创建一个具有指定文本和列数的JTextField对象。
JTextField textField = new JTextField("Hello World", 10); // 创建一个带有文本"Hello World"和10个列的JTextField对象

通过这些构造方法,我们可以创建不同类型的JTextField对象,根据我们的需求来设置文本和列数。

JTextField常用成员方法

常用的JTextField成员方法包括:

  1. setText(String text):设置文本框的内容。
  2. getText():获取文本框的内容。
  3. setEditable(boolean editable):设置文本框是否可编辑。
  4. setColumns(int columns):设置文本框的列数。
  5. setHorizontalAlignment(int alignment):设置文本框中文本的水平对齐方式。
  6. selectAll():选择文本框中的所有文本。
  7. setCaretPosition(int pos):设置文本框中光标的位置。
  8. getSelectedText():获取被选中的文本。
  9. replaceSelection(String content):用指定的内容替换文本框中选中的文本。
  10. addActionListener(ActionListener listener):为文本框添加动作监听器,当用户敲击回车键时触发动作事件。

这些方法可以用来操作JTextField对象的文本内容、可编辑性、对齐方式以及添加和处理事件等。

代码示例

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TextFieldExample {
    public static void main(String[] args) {
        // 创建一个 JFrame 对象
        JFrame frame = new JFrame("Text Field Example");

        // 创建一个面板
        JPanel panel = new JPanel();

        // 创建一个文本框和标签
        JTextField textField = new JTextField(20);
        JLabel label = new JLabel("Username");

        // 创建一个密码框和标签
        JPasswordField passwordField = new JPasswordField(20);
        JLabel passwordLabel = new JLabel("Password");

        // 创建一个按钮和按钮标签
        JButton button = new JButton("Login");

        // 添加组件到面板
        panel.add(label);
        panel.add(textField);
        panel.add(passwordLabel);
        panel.add(passwordField);
        panel.add(button);

        // 设置面板的布局
        panel.setLayout(new GridLayout(3, 2));

        // 添加面板到 JFrame
        frame.getContentPane().add(panel);

        // 设置 JFrame 的大小
        frame.setSize(400, 150);

        // 设置 JFrame 的可见性
        frame.setVisible(true);

        // 设置点击按钮时的动作事件
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 获取文本框和密码框的内容
                String username = textField.getText();
                String password = new String(passwordField.getPassword());

                // 在控制台打印用户名和密码
                System.out.println("Username: " + username);
                System.out.println("Password: " + password);
            }
        });
    }
}

四、文本域(JTextArea)

Swing 中通过类JTextArea 实例化文本城对象。该类继承自类JTextComponent。该类的构造方法有 6 种重载形式,但是无法通过参数赋值来指定滚动条,这一点与 AWT的TextArea 不同。应该调用 JScrollPane对象的成员方法 setViewportView()将 JTextArea 对象添加到JScrollPane 面板中,JScrollPane 面板是具有滚动条的面板。

JTextArea的构造方法

JTextArea的构造方法有多个重载形式,以下是其中的一些常用构造方法:

  1. JTextArea(): 创建一个默认的JTextArea对象,没有文本内容。

  2. JTextArea(String text): 创建一个具有指定文本内容的JTextArea对象。

  3. JTextArea(int rows, int columns): 创建一个具有指定行数和列数的JTextArea对象,但没有文本内容。

  4. JTextArea(String text, int rows, int columns): 创建一个具有指定文本内容、行数和列数的JTextArea对象。

  5. JTextArea(Document doc): 创建一个使用指定文档作为模型的JTextArea对象。

  6. JTextArea(Document doc, String text, int rows, int columns): 创建一个使用指定文档、文本内容、行数和列数的JTextArea对象。

以上构造方法可以根据需要选择合适的来创建JTextArea对象,并可以通过调用JTextArea的其他方法来设置和获取文本内容、行数和列数等属性。

JTextArea的常用成员方法

JTextArea类提供了许多常用的成员方法来操作文本区域的内容和属性。以下是JTextArea的一些常用成员方法:

  1. append(String str): 在文本区域的末尾追加指定的字符串。

  2. insert(String str, int pos): 在文本区域的指定位置插入指定的字符串。

  3. setText(String str): 设置文本区域的文本内容为指定的字符串。

  4. getText(): 获取文本区域的当前文本内容。

  5. setRows(int rows): 设置文本区域的行数。

  6. setColumns(int columns): 设置文本区域的列数。

  7. setLineWrap(boolean wrap): 设置是否自动换行。

  8. setEditable(boolean editable): 设置文本区域是否可编辑。

  9. getCaretPosition(): 获取当前光标位置。

  10. setSelectionStart(int start): 设置选中部分的起始位置。

  11. setSelectionEnd(int end): 设置选中部分的结束位置。

  12. getSelectedText(): 获取当前选中的文本。

这些方法可以通过调用JTextArea对象来使用,根据需要来操作文本区域的内容和属性。

代码示例

import javax.swing.*;
import java.awt.*;

public class JTextAreaExample {
    public static void main(String[] args) {
        // 创建一个JFrame窗口
        JFrame frame = new JFrame("JTextArea Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        // 创建一个JTextArea对象
        JTextArea textArea = new JTextArea();
        textArea.setLineWrap(true); // 设置自动换行
        
        // 创建一个JScrollPane,并将JTextArea作为其视口组件
        JScrollPane scrollPane = new JScrollPane(textArea);
        
        // 将JScrollPane添加到JFrame窗口中
        frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
        
        // 设置窗口大小和可见性
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}

五、复选框(JCheckBox)

Swing的JCheckBox 类对 AWT的 ChecBbox类进行功能扩展,创建的复选框组件不仅可以显示文本标签,而且可以设置图标代替选项前的方框。JCheckBox 类的构造方法有8种重载形式。

JCheckBox的构造方法

JCheckBox的构造方法有以下几种:

  1. JCheckBox():创建一个没有标签的复选框。

  2. JCheckBox(String text):创建一个带有指定标签的复选框。

  3. JCheckBox(String text, boolean selected):创建一个带有指定标签和初始选择状态的复选框。

  4. JCheckBox(Icon icon):创建一个带有指定图标的复选框。

  5. JCheckBox(Icon icon, boolean selected):创建一个带有指定图标和初始选择状态的复选框。

  6. JCheckBox(String text, Icon icon):创建一个带有指定标签和图标的复选框。

  7. JCheckBox(String text, Icon icon, boolean selected):创建一个带有指定标签、图标和初始选择状态的复选框。

在这些构造方法中,text参数表示复选框的标签,icon参数表示复选框的图标,selected参数表示复选框的初始选择状态。

JCheckBox常用成员方法

JCheckBox类常用的成员方法有:

  1. isSelected():返回JCheckBox是否被选中。

  2. setSelected(boolean selected):设置JCheckBox是否被选中。

  3. isSelectedIcon():返回JCheckBox选中状态下的图标。

  4. setSelectedIcon(Icon icon):设置JCheckBox选中状态下的图标。

  5. getDisabledSelectedIcon():返回JCheckBox禁用且选中状态下的图标。

  6. setDisabledSelectedIcon(Icon icon):设置JCheckBox禁用且选中状态下的图标。

  7. getDisabledIcon():返回JCheckBox禁用状态下的图标。

  8. setDisabledIcon(Icon icon):设置JCheckBox禁用状态下的图标。

  9. getText():返回JCheckBox的文本。

  10. setText(String text):设置JCheckBox的文本。

  11. getIcon():返回JCheckBox的普通状态下的图标。

  12. setIcon(Icon icon):设置JCheckBox的普通状态下的图标。

  13. getActionCommand():返回JCheckBox的动作命令。

  14. setActionCommand(String command):设置JCheckBox的动作命令。

  15. addItemListener(ItemListener listener):为JCheckBox添加项目监听器。

  16. removeItemListener(ItemListener listener):移除JCheckBox的项目监听器。

  17. addActionListener(ActionListener listener):为JCheckBox添加动作监听器。

  18. removeActionListener(ActionListener listener):移除JCheckBox的动作监听器。

代码示例

下面是一个简单的JCheckBox的使用示例:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class CheckBoxExample extends JFrame {
    private JCheckBox checkBox1;
    private JCheckBox checkBox2;
    private JButton submitButton;

    public CheckBoxExample() {
        // 创建窗口
        setTitle("Checkbox Example");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());

        // 创建复选框
        checkBox1 = new JCheckBox("Option 1");
        checkBox2 = new JCheckBox("Option 2");

        // 创建提交按钮
        submitButton = new JButton("Submit");

        // 添加复选框和按钮到窗口
        add(checkBox1);
        add(checkBox2);
        add(submitButton);

        // 添加按钮点击事件监听器
        submitButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String message = "你选择的选项是:";
                if (checkBox1.isSelected()) {
                    message += "选项1 ";
                }
                if (checkBox2.isSelected()) {
                    message += "选项2 ";
                }
                JOptionPane.showMessageDialog(null, message);
            }
        });
    }

    public static void main(String[] args) {
        CheckBoxExample checkBoxExample = new CheckBoxExample();
        checkBoxExample.setVisible(true);
    }
}

这个示例演示了如何创建一个带有两个复选框和一个按钮的窗口。当用户点击提交按钮时,程序会检查哪些复选框被选中,并以弹框的方式显示用户选择的选项。

六、单选按钮(JRadioButton)

Swing 中通过类 JRadioButton 实例化单选按钮对象。该类和 JCheckBox 有共同的父类 JToggleButton, JRadioButton 的构造方法多达8种重载形式,通过参数赋值可以在初始化单选按钮时,同时指定单选按钮的文字、图标,以及默认的状态选择等。

Swing 中的类 ButtonGroup 实例化按钮组对象。如果要将多个单选按钮组合成具有互斥关系的单选按钮组,则需要调用 ButtonGroup 对象的成员方法 add(), 添加这些单选按钮对象到同一个 ButtonGroup 对象中。

JRadioButton的构造方法

JRadioButton类的构造方法有以下几种:

  1. JRadioButton():创建一个默认未选中的单选按钮。

  2. JRadioButton(Icon icon):创建一个指定图标的未选中的单选按钮。

  3. JRadioButton(Icon icon, boolean selected):创建一个指定图标和选择状态的单选按钮。

  4. JRadioButton(String text):创建一个指定文本的未选中的单选按钮。

  5. JRadioButton(String text, boolean selected):创建一个指定文本和选择状态的单选按钮。

  6. JRadioButton(String text, Icon icon):创建一个指定文本和图标的未选中的单选按钮。

  7. JRadioButton(String text, Icon icon, boolean selected):创建一个指定文本、图标和选择状态的单选按钮。

其中,Icon是一个用于表示图标的接口,可以使用ImageIcon类来创建图标对象。

JRadioButton常用成员方法

JRadioButton类是Java Swing库中的一个组件,用于创建单选按钮。JRadioButton类继承自AbstractButton类,因此可以使用AbstractButton类中定义的大多数常用成员方法。以下是JRadioButton常用的成员方法:

  1. isSelected():检查单选按钮是否被选中。

  2. setSelected(boolean selected):设置单选按钮的选中状态。

  3. getText():获取单选按钮的文本。

  4. setText(String text):设置单选按钮的文本。

  5. isEnabled():检查单选按钮是否可用。

  6. setEnabled(boolean enabled):设置单选按钮是否可用。

  7. getActionCommand():获取单选按钮的动作命令。

  8. setActionCommand(String command):设置单选按钮的动作命令。

  9. addItemListener(ItemListener listener):添加项目监听器,用于处理单选按钮的选择事件。

  10. removeItemListener(ItemListener listener):移除项目监听器。

以上是JRadioButton类的一些常用成员方法,可以通过调用这些方法来操作和控制单选按钮的状态和行为。

代码示例

下面是一个使用JRadioButton的示例代码:

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class JRadioButtonExample extends JFrame {
    private JLabel label;

    public JRadioButtonExample() {
        setTitle("JRadioButton Example");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(300, 200);
        setLocationRelativeTo(null);

        JPanel panel = new JPanel();

        JRadioButton radioButton1 = new JRadioButton("Option 1");
        JRadioButton radioButton2 = new JRadioButton("Option 2");
        JRadioButton radioButton3 = new JRadioButton("Option 3");

        ButtonGroup buttonGroup = new ButtonGroup();
        buttonGroup.add(radioButton1);
        buttonGroup.add(radioButton2);
        buttonGroup.add(radioButton3);

        radioButton1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                label.setText("Option 1 selected");
            }
        });

        radioButton2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                label.setText("Option 2 selected");
            }
        });

        radioButton3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                label.setText("Option 3 selected");
            }
        });

        panel.add(radioButton1);
        panel.add(radioButton2);
        panel.add(radioButton3);

        label = new JLabel("Select an option");
        panel.add(label);

        add(panel);
    }

    public static void main(String[] args) {
        JRadioButtonExample example = new JRadioButtonExample();
        example.setVisible(true);
    }
}

这个示例展示了一个简单的窗口,在窗口中有三个JRadioButton对象和一个JLabel对象。它们都被添加到一个JPanel中,并且通过ButtonGroup对象进行分组,以确保只能选择一个选项。当选择一个选项时,会显示相应的信息在JLabel中。

七、下拉列表(JComboBox)

Swing 中通过类JComboBox 实例化下拉列表对象。JComboBox创建的下拉列表类似干 Windows 操作系统中的组合列表框,不仅可以进行项目选择模作,同时可以进行项目编辑操作。JComboBox的构造方法有4种重载形式,通过参数陆值可以在初始化下拉列表时,同时添加下拉列表的选项;添加的方式有 3 种类型,包括数组、Vecior 类型和ComboBoxModel 模型。与 AWT 中类 Choice 创建的下拉列表中的选项不同,JComboBox 所创建的下拉列表的选项可以是任何类型,不再局限于文本字符串。

若在类JComboBox 创建下拉列表的同时添加选项,首先需要创建选项的数组,或者将选项封装为 ComboBoxModel 对象,或者创建 Vector对象;然后选用相应的 JComboBox 构造方法实例化下拉列表对象。

JComboBox的构造方法

JComboBox的构造方法有以下几种:

  1. JComboBox():创建一个空的下拉列表框。
  2. JComboBox(Object[] items):使用指定的项数组创建一个下拉列表框。
  3. JComboBox(Vector<?> items):使用指定的项向量创建一个下拉列表框。
  4. JComboBox(ComboBoxModel<?> aModel):使用指定的ComboBoxModel创建一个下拉列表框。

其中,ComboBoxModel是一个接口,用于提供下拉列表框的数据模型。常用的实现类有DefaultComboBoxModel和可编辑的DefaultComboBoxModel。

JComboBox常用成员方法

JComboBox常用成员方法包括:

  1. addItem(Object item):向下拉列表中添加一个选项。
  2. removeItem(Object item):从下拉列表中移除指定的选项。
  3. getSelectedItem():返回当前选中的选项。
  4. setSelectedItem(Object item):设置当前选中的选项。
  5. getItemCount():返回下拉列表中的选项数量。
  6. getItemAt(int index):返回指定索引位置的选项。
  7. setEditable(boolean editable):设置下拉列表是否可编辑。
  8. setRenderer(ListCellRenderer renderer):设置下拉列表中选项的渲染方式。
  9. addActionListener(ActionListener listener):为下拉列表添加一个动作监听器。
  10. getActionCommand():返回与最后一个选定的下拉列表项关联的操作命令。

这些方法可以帮助你对JComboBox进行操作和获取信息。

代码示例

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ComboBoxExample {
    public static void main(String[] args) {
        // 创建 JFrame 实例
        JFrame frame = new JFrame("ComboBox Example");
        // 设置窗口的宽高
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 创建一个标签和一个空的 ComboBox
        JLabel label = new JLabel("请选择一个选项:");
        JComboBox comboBox = new JComboBox();

        // 添加选项到 ComboBox
        comboBox.addItem("选项一");
        comboBox.addItem("选项二");
        comboBox.addItem("选项三");

        // 设置默认选项
        comboBox.setSelectedIndex(0);

        // 创建一个按钮
        JButton button = new JButton("确定");

        // 创建一个监听器,用于监听按钮的点击事件
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 获取选择的选项
                String selectedOption = (String) comboBox.getSelectedItem();
                // 在控制台输出选项
                System.out.println("选择的选项是:" + selectedOption);
            }
        });

        // 创建一个面板,并将标签、ComboBox和按钮添加到面板中
        JPanel panel = new JPanel();
        panel.add(label);
        panel.add(comboBox);
        panel.add(button);

        // 将面板添加到窗口中
        frame.add(panel);

        // 设置窗口可见
        frame.setVisible(true);
    }
}

八、列表(JList)

Swing 中通过类JList实例化列表对象。JList 的构造方法有4种重载形式,通过参数赋值可以在初始化列表时,同时添加列表的选项:添加的方式有3种类型,包括数组、Vector 类型和 ListModel 模型。而AWT中的 List在初始化列表时,不能添加列表选项;此外,JList 所创建的列表的选项可以是任何类型,不再局限于文本字符串。

若在类JList 创建列表的同时添加选项,首先需要创建选项的数组,或者将选项封装为ListModel 对象,或者创建 Vector对象;然后选用相应的JList构造方法实例化列表对象。

JList的构造方法

JList是Swing组件中的一个类,用于显示列表数据。JList的构造方法有多种重载形式,可以根据不同的需求进行选择。

  1. JList(): 创建一个空的JList对象。

  2. JList(Object[] listData): 创建一个包含给定列表数据的JList对象。

  3. JList(Vector<?> listData): 创建一个包含给定列表数据的JList对象。

  4. JList(ListModel dataModel): 创建一个使用指定数据模型的JList对象。

  5. JList(DefaultListModel dataModel): 创建一个使用指定数据模型的JList对象。

这些构造方法允许我们使用不同的方式来初始化JList对象,包括直接传入列表数据、使用数据模型等。根据实际需求选择合适的构造方法即可。

JList常用成员方法

JList类是Java Swing库中的一个成员,用于显示一列数据,并允许用户从中选择一个或多个项目。下面是JList类中一些常用的成员方法:

  1. JList(Object[] listData): 创建一个JList对象,传入一个Object数组作为列表数据。

  2. JList(Vector listData): 创建一个JList对象,传入一个Vector对象作为列表数据。

  3. void setListData(Object[] listData): 设置JList的列表数据,传入一个Object数组。

  4. void setListData(Vector listData): 设置JList的列表数据,传入一个Vector对象。

  5. Object[] getListData(): 返回JList的列表数据,以Object数组的形式。

  6. void setSelectionMode(int selectionMode): 设置JList的选择模式,可以是SINGLE_SELECTION(单选)、SINGLE_INTERVAL_SELECTION(单一间隔选择)或MULTIPLE_INTERVAL_SELECTION(多个间隔选择)。

  7. int getSelectionMode(): 返回JList的选择模式。

  8. void setSelectedIndex(int index): 设置JList中指定索引的项目为选中状态。

  9. void setSelectedIndices(int[] indices): 设置JList中指定索引的项目为选中状态。

  10. void setSelectedValue(Object value, boolean shouldScroll): 设置JList中指定值的项目为选中状态,可以选择是否滚动到选中的项目。

  11. Object getSelectedValue(): 返回被选中的项目的值。

  12. int[] getSelectedIndices(): 返回被选中的项目的索引,以整数数组的形式。

  13. void clearSelection(): 清除JList中的所有选中状态。

  14. boolean isSelectedIndex(int index): 判断指定索引的项目是否为选中状态。

  15. void ensureIndexIsVisible(int index): 确保指定索引的项目可见,如果需要的话,会自动滚动到相应位置。

这些是JList类中一些常用的成员方法,可以用来操作和获取JList对象中的数据和状态。

代码示例

下面是一个使用JList的示例代码:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class JListExample extends JFrame {

    private DefaultListModel<String> model;
    private JList<String> myList;
    private JButton addButton;
    private JButton removeButton;

    public JListExample() {
        model = new DefaultListModel<>();
        myList = new JList<>(model);
        addButton = new JButton("Add Item");
        removeButton = new JButton("Remove Item");

        addButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String newItem = JOptionPane.showInputDialog("Enter new item:");
                model.addElement(newItem);
            }
        });

        removeButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                int selectedIndex = myList.getSelectedIndex();
                if(selectedIndex != -1) {
                    model.remove(selectedIndex);
                }
            }
        });

        JPanel panel = new JPanel();
        panel.add(myList);
        panel.add(addButton);
        panel.add(removeButton);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().add(panel);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        new JListExample();
    }
}

这个示例展示了如何使用JList来显示一组项目,并且可以添加和删除项目。在这个示例中,我们使用了DefaultListModel来保存项目列表,并将其作为参数传递给JList构造函数。然后,我们创建了两个按钮,一个用于添加项目,另一个用于删除选定的项目。当点击添加按钮时,会弹出一个对话框,要求用户输入新项目的名称,并将其添加到列表中。当点击删除按钮时,会删除选定的项目。整个界面使用JPanel来组织,并且使用了JFrame作为窗口容器。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲜于言悠905

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值