Java jframe,jpanel,jlabel,jbutton,jtextfield,jpassword,jtextarea,jradiobutton,buttongroup,jcheckbox,jcombobox,jscrollpane,color,组件的结合使用代码制作一个图书借阅管理系统,并具有查询数据时显示在一个具有上下左右的滚动条的表里面,给出示例代码,中文注释
时间: 2023-11-25 17:07:12 浏览: 115
好的,我来给你提供一个示例代码,其中包含了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组件的使用,以及简单的事件监听处理。你可以根据自己的需求进行修改和完善。
阅读全文