下列哪个组件不可以作为ActionEvent事件的事件源?(2.0) A JButton组件 B JItemMenu组件 C JTextField组件 D JTextArea组件
时间: 2023-08-18 22:49:28 浏览: 159
选项 D 中的 JTextArea 组件不能作为 ActionEvent 事件的事件源。
ActionEvent 是由用户操作触发的事件,因此只有那些能够被用户操作的组件才能作为 ActionEvent 事件的事件源。而 JTextArea 组件通常用于显示多行文本,用户无法直接对其进行操作,因此不能作为 ActionEvent 事件的事件源。而 JButton、JItemMenu 和 JTextField 组件都可以被用户操作,因此它们都可以作为 ActionEvent 事件的事件源。
相关问题
帮我补充这段代码便签管理部分的代码框架: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Memo extends JFrame { private JTextField titleField; private JTextArea contentArea; private JTextField timeField; private JButton addButton; private JButton editButton; private JButton deleteButton; private JButton viewButton; private JList memoList; private DefaultListModel listModel; public Memo() { // 初始化界面和组件 // 添加事件监听器 // 实现添加、编辑、删除和查看便签信息的功能 } public static void main(String[] args) { Memo memo = new Memo(); memo.setVisible(true); } }
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Memo extends JFrame {
private JTextField titleField;
private JTextArea contentArea;
private JTextField timeField;
private JButton addButton;
private JButton editButton;
private JButton deleteButton;
private JButton viewButton;
private JList memoList;
private DefaultListModel listModel;
public Memo() {
// 初始化界面和组件
setTitle("便签管理");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 400);
setLocationRelativeTo(null);
JPanel topPanel = new JPanel(new BorderLayout());
JPanel inputPanel = new JPanel(new GridLayout(1, 3));
titleField = new JTextField();
contentArea = new JTextArea();
timeField = new JTextField();
inputPanel.add(titleField);
inputPanel.add(contentArea);
inputPanel.add(timeField);
topPanel.add(inputPanel, BorderLayout.CENTER);
JPanel buttonPanel = new JPanel(new FlowLayout());
addButton = new JButton("添加");
editButton = new JButton("编辑");
deleteButton = new JButton("删除");
viewButton = new JButton("查看");
buttonPanel.add(addButton);
buttonPanel.add(editButton);
buttonPanel.add(deleteButton);
buttonPanel.add(viewButton);
topPanel.add(buttonPanel, BorderLayout.SOUTH);
add(topPanel, BorderLayout.NORTH);
listModel = new DefaultListModel();
memoList = new JList(listModel);
JScrollPane scrollPane = new JScrollPane(memoList);
add(scrollPane, BorderLayout.CENTER);
// 添加事件监听器
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 添加便签信息
String title = titleField.getText();
String content = contentArea.getText();
String time = timeField.getText();
MemoData memo = new MemoData(title, content, time);
listModel.addElement(memo);
}
});
editButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 编辑便签信息
int index = memoList.getSelectedIndex();
if (index != -1) {
String title = titleField.getText();
String content = contentArea.getText();
String time = timeField.getText();
MemoData memo = new MemoData(title, content, time);
listModel.remove(index);
listModel.add(index, memo);
}
}
});
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 删除便签信息
int index = memoList.getSelectedIndex();
if (index != -1) {
listModel.remove(index);
}
}
});
viewButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 查看便签信息
int index = memoList.getSelectedIndex();
if (index != -1) {
MemoData memo = (MemoData) listModel.getElementAt(index);
titleField.setText(memo.getTitle());
contentArea.setText(memo.getContent());
timeField.setText(memo.getTime());
}
}
});
}
public static void main(String[] args) {
Memo memo = new Memo();
memo.setVisible(true);
}
}
class MemoData {
private String title;
private String content;
private String time;
public MemoData(String title, String content, String time) {
this.title = title;
this.content = content;
this.time = time;
}
public String getTitle() {
return title;
}
public String getContent() {
return content;
}
public String getTime() {
return time;
}
@Override
public String toString() {
return title + " - " + time;
}
}
Java jframe,jpanel,jlabel,jbutton,jtextfield,jpassword,jtextarea,jradiobutton,buttongroup,jcheckbox,jcombobox,jscrollpane,color,组件的结合使用代码制作一个图书借阅管理系统,并具有查询数据时显示在一个具有上下左右的滚动条的表里面,给出示例代码,中文注释
好的,我来给你提供一个示例代码,其中包含了Java JFrame、JPanel、JLabel、JButton、JTextField、JPasswordField、JTextArea、JRadioButton、ButtonGroup、JCheckBox、JComboBox、JScrollPane、Color等组件的结合使用,实现了一个简单的图书借阅管理系统,并具有查询数据时显示在一个具有上下左右的滚动条的表格里面。以下是代码及注释:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class BookBorrowManager extends JFrame implements ActionListener {
// 声明需要用到的组件
private JLabel titleLabel, bookNameLabel, authorLabel, publisherLabel, borrowDateLabel, returnDateLabel;
private JTextField bookNameTextField, authorTextField, publisherTextField, borrowDateTextField, returnDateTextField;
private JTextArea resultTextArea;
private JButton borrowButton, returnButton, queryButton;
private JRadioButton borrowRadioButton, returnRadioButton;
private ButtonGroup borrowGroup;
private JCheckBox agreeCheckBox;
private JComboBox<String> bookTypeComboBox;
private JScrollPane scrollPane;
public BookBorrowManager() {
// 设置窗口标题
setTitle("图书借阅管理系统");
// 设置窗口大小
setSize(600, 500);
// 设置窗口位置
setLocationRelativeTo(null);
// 禁止用户改变窗口大小
setResizable(false);
// 当关闭窗口时,退出程序
setDefaultCloseOperation(EXIT_ON_CLOSE);
// 创建一个面板,用于放置组件
JPanel panel = new JPanel();
panel.setLayout(null); // 设置为绝对布局
// 创建标题标签
titleLabel = new JLabel("图书借阅管理系统");
titleLabel.setBounds(200, 20, 200, 30); // 设置位置和大小
titleLabel.setFont(new Font("微软雅黑", Font.BOLD, 18)); // 设置字体和大小
panel.add(titleLabel); // 添加到面板中
// 创建书名标签和文本框
bookNameLabel = new JLabel("书名:");
bookNameLabel.setBounds(50, 80, 50, 30);
panel.add(bookNameLabel);
bookNameTextField = new JTextField();
bookNameTextField.setBounds(110, 80, 120, 30);
panel.add(bookNameTextField);
// 创建作者标签和文本框
authorLabel = new JLabel("作者:");
authorLabel.setBounds(50, 120, 50, 30);
panel.add(authorLabel);
authorTextField = new JTextField();
authorTextField.setBounds(110, 120, 120, 30);
panel.add(authorTextField);
// 创建出版社标签和文本框
publisherLabel = new JLabel("出版社:");
publisherLabel.setBounds(50, 160, 60, 30);
panel.add(publisherLabel);
publisherTextField = new JTextField();
publisherTextField.setBounds(110, 160, 120, 30);
panel.add(publisherTextField);
// 创建借阅日期标签和文本框
borrowDateLabel = new JLabel("借阅日期:");
borrowDateLabel.setBounds(50, 200, 80, 30);
panel.add(borrowDateLabel);
borrowDateTextField = new JTextField();
borrowDateTextField.setBounds(140, 200, 90, 30);
panel.add(borrowDateTextField);
// 创建归还日期标签和文本框
returnDateLabel = new JLabel("归还日期:");
returnDateLabel.setBounds(50, 240, 80, 30);
panel.add(returnDateLabel);
returnDateTextField = new JTextField();
returnDateTextField.setBounds(140, 240, 90, 30);
panel.add(returnDateTextField);
// 创建借阅和归还单选按钮
borrowRadioButton = new JRadioButton("借阅");
borrowRadioButton.setBounds(50, 280, 60, 30);
returnRadioButton = new JRadioButton("归还");
returnRadioButton.setBounds(120, 280, 60, 30);
// 将两个单选按钮放到同一个按钮组里
borrowGroup = new ButtonGroup();
borrowGroup.add(borrowRadioButton);
borrowGroup.add(returnRadioButton);
panel.add(borrowRadioButton);
panel.add(returnRadioButton);
// 创建借阅和归还按钮
borrowButton = new JButton("借阅");
borrowButton.setBounds(50, 320, 80, 30);
borrowButton.addActionListener(this); // 监听按钮点击事件
returnButton = new JButton("归还");
returnButton.setBounds(140, 320, 80, 30);
returnButton.addActionListener(this);
// 默认为借阅按钮可用,归还按钮不可用
borrowButton.setEnabled(true);
returnButton.setEnabled(false);
panel.add(borrowButton);
panel.add(returnButton);
// 创建查询按钮
queryButton = new JButton("查询");
queryButton.setBounds(420, 80, 80, 30);
queryButton.addActionListener(this);
panel.add(queryButton);
// 创建查询结果文本区域
resultTextArea = new JTextArea();
resultTextArea.setEditable(false); // 设置为只读
// 创建滚动面板,将文本区域添加进去
scrollPane = new JScrollPane(resultTextArea);
scrollPane.setBounds(260, 120, 240, 230);
// 设置滚动面板的位置和大小,以及滚动条的显示策略
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
panel.add(scrollPane);
// 创建复选框
agreeCheckBox = new JCheckBox("同意借阅协议");
agreeCheckBox.setBounds(50, 360, 120, 30);
// 默认为不同意
agreeCheckBox.setSelected(false);
panel.add(agreeCheckBox);
// 创建下拉框
bookTypeComboBox = new JComboBox<>(new String[]{"计算机科学", "数学", "物理", "化学"});
bookTypeComboBox.setBounds(50, 400, 120, 30);
panel.add(bookTypeComboBox);
// 将面板添加到窗口中
add(panel);
// 显示窗口
setVisible(true);
}
// 监听按钮的点击事件
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == borrowButton) { // 如果点击的是借阅按钮
if (agreeCheckBox.isSelected()) { // 如果同意借阅协议
// TODO: 实现借阅功能
JOptionPane.showMessageDialog(this, "借阅成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
borrowButton.setEnabled(false);
returnButton.setEnabled(true);
} else { // 如果没有同意借阅协议
JOptionPane.showMessageDialog(this, "请先同意借阅协议!", "提示", JOptionPane.WARNING_MESSAGE);
}
} else if (e.getSource() == returnButton) { // 如果点击的是归还按钮
// TODO: 实现归还功能
JOptionPane.showMessageDialog(this, "归还成功!", "提示", JOptionPane.INFORMATION_MESSAGE);
borrowButton.setEnabled(true);
returnButton.setEnabled(false);
} else if (e.getSource() == queryButton) { // 如果点击的是查询按钮
// TODO: 实现查询功能,并将结果显示在文本区域中
resultTextArea.setText("查询结果:\n书名\t作者\t出版社\t借阅日期\t归还日期\nJava入门\t张三\t人民邮电出版社\t2021-01-01\t2021-01-31\nPython编程\t李四\t清华大学出版社\t2021-02-01\t2021-02-28");
}
}
public static void main(String[] args) {
new BookBorrowManager();
}
}
```
通过运行上述代码,你可以看到一个简单的图书借阅管理系统,其中包含了多种Swing组件的使用,以及简单的事件监听处理。你可以根据自己的需求进行修改和完善。
阅读全文