swing 在文本框中输入字段,在JTable中检索,检索到后如何让这个单元格为选中状态

2025-03-04 06:30:56
推荐回答(2个)
回答1:

给你个简单范例:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.table.TableModel;

/**
*
* @author Jeky
*/
public class TableDemo extends JFrame {

public TableDemo() {
table = new JTable(new String[][]{{"a"}, {"b"}, {"c"}, {"d"}},
new String[]{"name"});
this.add(new JScrollPane(table));

JButton button = new JButton("search");
button.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
TableModel model = table.getModel();
for (int i = 0; i < model.getRowCount(); i++) {
Object value = model.getValueAt(i, 0);
if(field.getText().equals(value)){
table.setRowSelectionInterval(i, i);
return;
}
}
table.clearSelection();
}
});

JPanel panel = new JPanel();
panel.add(new JLabel("key:"));
field = new JTextField(5);
panel.add(field);
panel.add(button);

this.add(panel,BorderLayout.SOUTH);
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
new TableDemo().setVisible(true);
}
private JTable table;
private JTextField field;
}

回答2:

void setRowSelectionInterval(int index0, int index1)

选择从 index0 到 index1 之间(包含两端)的行