jButtonById = new JButton(); getContentPane().add(jButtonById); jButtonById.setText("搜索"); jButtonById.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { int bookId = Integer.parseInt(jTextById.getText().trim()); s = new Parkimpl(); String[] newCell = s.Query(bookId); tableModel.addRow(newCell); } });这段java的搜索代码如何让文本中搜寻不到的提示为空,代码应该怎样写
时间: 2023-02-06 16:37:11 浏览: 190
这段代码定义了一个名为 `jButtonById` 的 `JButton` 对象,并添加了一个事件监听器,当用户点击按钮时会触发事件。在事件处理函数 `actionPerformed` 中,它会从一个名为 `jTextById` 的文本框中获取输入的书籍 ID,然后调用 `Parkimpl` 类的 `Query` 方法查询书籍信息,并将查询结果添加到表格中。
如果你想让搜索不到的提示为空,可以在调用 `Query` 方法后判断返回的数组是否为空,如果为空就显示一条提示信息,否则就添加到表格中。
例如,你可以在 `actionPerformed` 函数中添加如下代码:
```
String[] newCell = s.Query(bookId);
if (newCell == null || newCell.length == 0) {
JOptionPane.showMessageDialog(null, "未找到书籍信息");
} else {
tableModel.addRow(newCell);
}
```
这样,当查询不到书籍信息时,会弹出一个对话框显示“未找到书籍信息”。
相关问题
package my; import javax.swing.*; import java.awt.event.*; public class ButtonClickEvent extends JFrame{ JButton btn; public static void main(String[] args) { // TODO Auto-generated method stub ButtonClickEvent frame=new ButtonClickEvent(); } public ButtonClickEvent() { super("Window Title"); btn=new JButton("Click here"); getContentPane().add("Center",btn); ButtonListener listen=new ButtonListener(); btn.addActionListener(listen); setSize(200,300); setVisible(true); } class ButtonListener implements ActionListener{ public void actionPerformed(ActionEvent e) { JButton source=(JButton)e.getSource(); source.setText("Button clicked"); } } }如何改为两个命令按钮
您可以将原来的按钮代码复制并稍作修改来创建第二个按钮,然后将它们分别添加到 JFrame 的内容面板中。修改后的代码如下:
```java
package my;
import javax.swing.*;
import java.awt.event.*;
public class ButtonClickEvent extends JFrame{
JButton btn1, btn2;
public static void main(String[] args) {
ButtonClickEvent frame=new ButtonClickEvent();
}
public ButtonClickEvent() {
super("Window Title");
btn1=new JButton("Click here");
getContentPane().add("Center",btn1);
ButtonListener listen1=new ButtonListener();
btn1.addActionListener(listen1);
btn2=new JButton("Or click here");
getContentPane().add("South",btn2); // 添加到南侧
ButtonListener listen2=new ButtonListener();
btn2.addActionListener(listen2);
setSize(200,300);
setVisible(true);
}
class ButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
JButton source=(JButton)e.getSource();
source.setText("Button clicked");
}
}
}
```
这个示例代码中,我们在 JFrame 的内容面板中添加了两个按钮,分别是 `btn1` 和 `btn2`。它们分别添加在中心和南侧位置,以便能够在界面上区分它们的位置。同时,我们创建了两个相同的按钮监听器 `ButtonListener` 用于监听这两个按钮的点击事件。
帮我改写的能运行起来package com.swingtest; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.table.DefaultTableModel; public class StudentManger extends JFrame implements ActionListener { JLabel lstname = new JLabel("学生姓名: "); JTextField tf_name = new JTextField(12); JLabel lmajor = new JLabel("专业"); JTextField tf_major = new JTextField(); JButton btnOK = new JButton("添加"); JButton btnDelete = new JButton("删除"); JButton btnQuit = new JButton("退出"); JTable table; DefaultTableModel model; public void studentManger(String name) { // TODO Auto-generated constructor stub JLabel welcome = new JLabel(name +",欢迎登录!"); setTitle("学生管理"); setSize(400,400); welcome.setBounds(50,20,200,20); lstname.setBounds(50,20,200,20); tf_name.setBounds(150,50,100,20); lmajor.setBounds(50,80,100,20); tf_major.setBounds(150,80,100,20); btnOK.setBounds(80,110,60,20); btnDelete.setBounds(150,110,60,20); btnQuit.setBounds(220,110,60,20); Container c = getContentPane(); JPanel panel = new JPanel(); panel.setLayout(null); panel.add(welcome); panel.add(lstname); panel.add(tf_name); panel.add(lmajor); panel.add(tf_major); panel.add(btnOK); panel.add(btnDelete); panel.add(btnQuit); String[] colName = {"姓名","专业"}; model = new DefaultTableModel(colName,0); table = new JTable(model); JScrollPane scrollPane = new JScrollPane(table); c.setLayout(new SpringLayout()); c.add(panel); c.add(scrollPane); setLocationRelativeTo(null); setVisible(true); btnOK.addActionListener(this); btnDelete.addActionListener(this); btnQuit.addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub Object ob = e.getSource(); if(ob == btnQuit) { System.exit(0); }else if(ob ==btnOK) { String[] stuInfo = {tf_name.getText(),tf_major.getText()}; model.addRow(stuInfo); tf_name.setText(""); tf_major.setText(""); }else if(ob == btnDelete) { if(table.getSelectedRow()<0) { JOptionPane.showMessageDialog(null,"请在表格中选中要删除的行");} else { model.removeRow(table.getSelectedRow()); } }} public static void main(String[] args) { new StudentManger(); } }
改写后的代码如下:
```java
package com.swingtest;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class StudentManager extends JFrame implements ActionListener {
private JLabel welcomeLabel;
private JLabel nameLabel;
private JTextField nameTextField;
private JLabel majorLabel;
private JTextField majorTextField;
private JButton addButton;
private JButton deleteButton;
private JButton quitButton;
private JTable table;
private DefaultTableModel model;
public StudentManager(String name) {
welcomeLabel = new JLabel(name + ",欢迎登录!");
nameLabel = new JLabel("学生姓名: ");
nameTextField = new JTextField(12);
majorLabel = new JLabel("专业");
majorTextField = new JTextField();
addButton = new JButton("添加");
deleteButton = new JButton("删除");
quitButton = new JButton("退出");
String[] colName = {"姓名", "专业"};
model = new DefaultTableModel(colName, 0);
table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
setTitle("学生管理");
setSize(400, 400);
setLocationRelativeTo(null);
setVisible(true);
welcomeLabel.setBounds(50, 20, 200, 20);
nameLabel.setBounds(50, 50, 100, 20);
nameTextField.setBounds(150, 50, 100, 20);
majorLabel.setBounds(50, 80, 100, 20);
majorTextField.setBounds(150, 80, 100, 20);
addButton.setBounds(80, 110, 60, 20);
deleteButton.setBounds(150, 110, 60, 20);
quitButton.setBounds(220, 110, 60, 20);
Container c = getContentPane();
JPanel panel = new JPanel();
panel.setLayout(null);
panel.add(welcomeLabel);
panel.add(nameLabel);
panel.add(nameTextField);
panel.add(majorLabel);
panel.add(majorTextField);
panel.add(addButton);
panel.add(deleteButton);
panel.add(quitButton);
c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));
c.add(panel);
c.add(scrollPane);
addButton.addActionListener(this);
deleteButton.addActionListener(this);
quitButton.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
Object ob = e.getSource();
if (ob == quitButton) {
System.exit(0);
} else if (ob == addButton) {
String[] stuInfo = {nameTextField.getText(), majorTextField.getText()};
model.addRow(stuInfo);
nameTextField.setText("");
majorTextField.setText("");
} else if (ob == deleteButton) {
if (table.getSelectedRow() < 0) {
JOptionPane.showMessageDialog(null, "请在表格中选中要删除的行");
} else {
model.removeRow(table.getSelectedRow());
}
}
}
public static void main(String[] args) {
new StudentManager("张三");
}
}
```
改写后的代码主要是对变量名和方法名进行规范化、重构,同时对布局管理器进行了修改,更加灵活。程序的功能并没有变化,仅仅是代码更加规范、易读。