前言
推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。 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 继承了若干静态常量形式的成员属性,用于设置文本的对齐方式。用于水平对齐方式的有LEFT
、CENTER
(标签只有图标时的默认对齐方式)、RIGHT
、 LEADING
(标签只有文本时的对齐方式),以及 TRAILING
。用于垂直对齐方式的有 TOP
、CENTER
(默认的),以及BOTTOM
.
代码示例
示例一
代码语言:javascript复制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()
方法,我们可以获取类的名称并打印出来。
输出结果为:
代码语言:javascript复制运行时类名称:java.lang.String
这个示例只是展示了getClass()
方法的基本用法,实际上它还可以应用于其他类型的对象,例如自定义类的对象。
使用getClass()与getResource()配合使用,可以获取当前类包所在路径的资源文件的URL
代码语言:javascript复制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组件库中的一个按钮组件,常用成员方法如下:
-
JButton(String text)
:使用指定的文本创建一个新按钮。 -
void addActionListener(ActionListener listener)
:将指定的动作侦听器添加到按钮上。 -
void setText(String text)
:设置按钮上显示的文本。 -
void setIcon(Icon icon)
:设置按钮上显示的图标。 -
void setEnabled(boolean enabled)
:设置按钮是否启用。 -
void setToolTipText(String text)
:设置按钮的工具提示文本。 -
void setMnemonic(int key)
:设置按钮的快捷键字符。 -
void setBounds(int x, int y, int width, int height)
:设置按钮的位置和大小。 -
void setBackground(Color color)
:设置按钮的背景颜色。 -
void setForeground(Color color)
:设置按钮的前景颜色。
代码示例
代码语言:javascript复制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类有以下构造方法:
- JTextField(): 创建一个没有文本的JTextField对象。
JTextField textField = new JTextField();
- JTextField(int columns): 创建一个具有指定列数的JTextField对象。
JTextField textField = new JTextField(10); // 创建一个具有10个列的JTextField对象
- JTextField(String text): 创建一个具有指定文本的JTextField对象。
JTextField textField = new JTextField("Hello World"); // 创建一个带有文本"Hello World"的JTextField对象
- JTextField(String text, int columns): 创建一个具有指定文本和列数的JTextField对象。
JTextField textField = new JTextField("Hello World", 10); // 创建一个带有文本"Hello World"和10个列的JTextField对象
通过这些构造方法,我们可以创建不同类型的JTextField对象,根据我们的需求来设置文本和列数。
JTextField常用成员方法
常用的JTextField成员方法包括:
setText(String text)
:设置文本框的内容。getText()
:获取文本框的内容。setEditable(boolean editable)
:设置文本框是否可编辑。setColumns(int columns)
:设置文本框的列数。setHorizontalAlignment(int alignment)
:设置文本框中文本的水平对齐方式。selectAll()
:选择文本框中的所有文本。setCaretPosition(int pos)
:设置文本框中光标的位置。getSelectedText()
:获取被选中的文本。replaceSelection(String content)
:用指定的内容替换文本框中选中的文本。addActionListener(ActionListener listener)
:为文本框添加动作监听器,当用户敲击回车键时触发动作事件。
这些方法可以用来操作JTextField对象的文本内容、可编辑性、对齐方式以及添加和处理事件等。
代码示例
代码语言:javascript复制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的构造方法有多个重载形式,以下是其中的一些常用构造方法:
- JTextArea(): 创建一个默认的JTextArea对象,没有文本内容。
- JTextArea(String text): 创建一个具有指定文本内容的JTextArea对象。
- JTextArea(int rows, int columns): 创建一个具有指定行数和列数的JTextArea对象,但没有文本内容。
- JTextArea(String text, int rows, int columns): 创建一个具有指定文本内容、行数和列数的JTextArea对象。
- JTextArea(Document doc): 创建一个使用指定文档作为模型的JTextArea对象。
- JTextArea(Document doc, String text, int rows, int columns): 创建一个使用指定文档、文本内容、行数和列数的JTextArea对象。
以上构造方法可以根据需要选择合适的来创建JTextArea对象,并可以通过调用JTextArea的其他方法来设置和获取文本内容、行数和列数等属性。
JTextArea的常用成员方法
JTextArea类提供了许多常用的成员方法来操作文本区域的内容和属性。以下是JTextArea的一些常用成员方法:
- append(String str): 在文本区域的末尾追加指定的字符串。
- insert(String str, int pos): 在文本区域的指定位置插入指定的字符串。
- setText(String str): 设置文本区域的文本内容为指定的字符串。
- getText(): 获取文本区域的当前文本内容。
- setRows(int rows): 设置文本区域的行数。
- setColumns(int columns): 设置文本区域的列数。
- setLineWrap(boolean wrap): 设置是否自动换行。
- setEditable(boolean editable): 设置文本区域是否可编辑。
- getCaretPosition(): 获取当前光标位置。
- setSelectionStart(int start): 设置选中部分的起始位置。
- setSelectionEnd(int end): 设置选中部分的结束位置。
- getSelectedText(): 获取当前选中的文本。
这些方法可以通过调用JTextArea对象来使用,根据需要来操作文本区域的内容和属性。
代码示例
代码语言:javascript复制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的构造方法有以下几种:
- JCheckBox():创建一个没有标签的复选框。
- JCheckBox(String text):创建一个带有指定标签的复选框。
- JCheckBox(String text, boolean selected):创建一个带有指定标签和初始选择状态的复选框。
- JCheckBox(Icon icon):创建一个带有指定图标的复选框。
- JCheckBox(Icon icon, boolean selected):创建一个带有指定图标和初始选择状态的复选框。
- JCheckBox(String text, Icon icon):创建一个带有指定标签和图标的复选框。
- JCheckBox(String text, Icon icon, boolean selected):创建一个带有指定标签、图标和初始选择状态的复选框。
在这些构造方法中,text参数表示复选框的标签,icon参数表示复选框的图标,selected参数表示复选框的初始选择状态。
JCheckBox常用成员方法
JCheckBox类常用的成员方法有:
- isSelected():返回JCheckBox是否被选中。
- setSelected(boolean selected):设置JCheckBox是否被选中。
- isSelectedIcon():返回JCheckBox选中状态下的图标。
- setSelectedIcon(Icon icon):设置JCheckBox选中状态下的图标。
- getDisabledSelectedIcon():返回JCheckBox禁用且选中状态下的图标。
- setDisabledSelectedIcon(Icon icon):设置JCheckBox禁用且选中状态下的图标。
- getDisabledIcon():返回JCheckBox禁用状态下的图标。
- setDisabledIcon(Icon icon):设置JCheckBox禁用状态下的图标。
- getText():返回JCheckBox的文本。
- setText(String text):设置JCheckBox的文本。
- getIcon():返回JCheckBox的普通状态下的图标。
- setIcon(Icon icon):设置JCheckBox的普通状态下的图标。
- getActionCommand():返回JCheckBox的动作命令。
- setActionCommand(String command):设置JCheckBox的动作命令。
- addItemListener(ItemListener listener):为JCheckBox添加项目监听器。
- removeItemListener(ItemListener listener):移除JCheckBox的项目监听器。
- addActionListener(ActionListener listener):为JCheckBox添加动作监听器。
- removeActionListener(ActionListener listener):移除JCheckBox的动作监听器。
代码示例
下面是一个简单的JCheckBox的使用示例:
代码语言:javascript复制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类的构造方法有以下几种:
- JRadioButton():创建一个默认未选中的单选按钮。
- JRadioButton(Icon icon):创建一个指定图标的未选中的单选按钮。
- JRadioButton(Icon icon, boolean selected):创建一个指定图标和选择状态的单选按钮。
- JRadioButton(String text):创建一个指定文本的未选中的单选按钮。
- JRadioButton(String text, boolean selected):创建一个指定文本和选择状态的单选按钮。
- JRadioButton(String text, Icon icon):创建一个指定文本和图标的未选中的单选按钮。
- JRadioButton(String text, Icon icon, boolean selected):创建一个指定文本、图标和选择状态的单选按钮。
其中,Icon是一个用于表示图标的接口,可以使用ImageIcon类来创建图标对象。
JRadioButton常用成员方法
JRadioButton类是Java Swing库中的一个组件,用于创建单选按钮。JRadioButton类继承自AbstractButton类,因此可以使用AbstractButton类中定义的大多数常用成员方法。以下是JRadioButton常用的成员方法:
-
isSelected()
:检查单选按钮是否被选中。 -
setSelected(boolean selected)
:设置单选按钮的选中状态。 -
getText()
:获取单选按钮的文本。 -
setText(String text)
:设置单选按钮的文本。 -
isEnabled()
:检查单选按钮是否可用。 -
setEnabled(boolean enabled)
:设置单选按钮是否可用。 -
getActionCommand()
:获取单选按钮的动作命令。 -
setActionCommand(String command)
:设置单选按钮的动作命令。 -
addItemListener(ItemListener listener)
:添加项目监听器,用于处理单选按钮的选择事件。 -
removeItemListener(ItemListener listener)
:移除项目监听器。
以上是JRadioButton类的一些常用成员方法,可以通过调用这些方法来操作和控制单选按钮的状态和行为。
代码示例
下面是一个使用JRadioButton的示例代码:
代码语言:javascript复制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的构造方法有以下几种:
- JComboBox():创建一个空的下拉列表框。
- JComboBox(Object[] items):使用指定的项数组创建一个下拉列表框。
- JComboBox(Vector<?> items):使用指定的项向量创建一个下拉列表框。
- JComboBox(ComboBoxModel<?> aModel):使用指定的ComboBoxModel创建一个下拉列表框。
其中,ComboBoxModel是一个接口,用于提供下拉列表框的数据模型。常用的实现类有DefaultComboBoxModel和可编辑的DefaultComboBoxModel。
JComboBox常用成员方法
JComboBox常用成员方法包括:
addItem(Object item)
:向下拉列表中添加一个选项。removeItem(Object item)
:从下拉列表中移除指定的选项。getSelectedItem()
:返回当前选中的选项。setSelectedItem(Object item)
:设置当前选中的选项。getItemCount()
:返回下拉列表中的选项数量。getItemAt(int index)
:返回指定索引位置的选项。setEditable(boolean editable)
:设置下拉列表是否可编辑。setRenderer(ListCellRenderer renderer)
:设置下拉列表中选项的渲染方式。addActionListener(ActionListener listener)
:为下拉列表添加一个动作监听器。getActionCommand()
:返回与最后一个选定的下拉列表项关联的操作命令。
这些方法可以帮助你对JComboBox进行操作和获取信息。
代码示例
代码语言:javascript复制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的构造方法有多种重载形式,可以根据不同的需求进行选择。
- JList(): 创建一个空的JList对象。
- JList(Object[] listData): 创建一个包含给定列表数据的JList对象。
- JList(Vector<?> listData): 创建一个包含给定列表数据的JList对象。
- JList(ListModel dataModel): 创建一个使用指定数据模型的JList对象。
- JList(DefaultListModel dataModel): 创建一个使用指定数据模型的JList对象。
这些构造方法允许我们使用不同的方式来初始化JList对象,包括直接传入列表数据、使用数据模型等。根据实际需求选择合适的构造方法即可。
JList常用成员方法
JList类是Java Swing库中的一个成员,用于显示一列数据,并允许用户从中选择一个或多个项目。下面是JList类中一些常用的成员方法:
-
JList(Object[] listData)
: 创建一个JList对象,传入一个Object数组作为列表数据。 -
JList(Vector listData)
: 创建一个JList对象,传入一个Vector对象作为列表数据。 -
void setListData(Object[] listData)
: 设置JList的列表数据,传入一个Object数组。 -
void setListData(Vector listData)
: 设置JList的列表数据,传入一个Vector对象。 -
Object[] getListData()
: 返回JList的列表数据,以Object数组的形式。 -
void setSelectionMode(int selectionMode)
: 设置JList的选择模式,可以是SINGLE_SELECTION(单选)、SINGLE_INTERVAL_SELECTION(单一间隔选择)或MULTIPLE_INTERVAL_SELECTION(多个间隔选择)。 -
int getSelectionMode()
: 返回JList的选择模式。 -
void setSelectedIndex(int index)
: 设置JList中指定索引的项目为选中状态。 -
void setSelectedIndices(int[] indices)
: 设置JList中指定索引的项目为选中状态。 -
void setSelectedValue(Object value, boolean shouldScroll)
: 设置JList中指定值的项目为选中状态,可以选择是否滚动到选中的项目。 -
Object getSelectedValue()
: 返回被选中的项目的值。 -
int[] getSelectedIndices()
: 返回被选中的项目的索引,以整数数组的形式。 -
void clearSelection()
: 清除JList中的所有选中状态。 -
boolean isSelectedIndex(int index)
: 判断指定索引的项目是否为选中状态。 -
void ensureIndexIsVisible(int index)
: 确保指定索引的项目可见,如果需要的话,会自动滚动到相应位置。
这些是JList类中一些常用的成员方法,可以用来操作和获取JList对象中的数据和状态。
代码示例
下面是一个使用JList的示例代码:
代码语言:javascript复制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作为窗口容器。