java 新建一个jtextfield和一个按钮,点击按钮筛选出tabel中第二列和jtextfeild输入相同的行
时间: 2023-07-16 20:16:44 浏览: 80
首先,你需要使用 javax.swing 包中的 JTextField 和 JButton 类来创建一个 JTextField 和 JButton 实例。然后,你需要在点击按钮时获取 JTextField 中输入的文本,并遍历 JTable 中的行,找到与 JTextField 中输入的文本相匹配的行,最后将它们显示在一个新的表格中。
下面是一个示例代码:
```
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
public class TableFilterDemo extends JFrame implements ActionListener {
private JTable table;
private DefaultTableModel model;
private JTextField textField;
private JButton button;
public TableFilterDemo() {
super("Table Filter Demo");
String[] columns = {"ID", "Name", "Age", "Gender"};
Object[][] data = {
{1, "Alice", 25, "Female"},
{2, "Bob", 30, "Male"},
{3, "Charlie", 35, "Male"},
{4, "David", 40, "Male"}
};
model = new DefaultTableModel(data, columns);
table = new JTable(model);
JPanel panel = new JPanel(new FlowLayout());
textField = new JTextField(10);
button = new JButton("Filter");
button.addActionListener(this);
textField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
button.setEnabled(textField.getText().length() > 0);
}
@Override
public void removeUpdate(DocumentEvent e) {
button.setEnabled(textField.getText().length() > 0);
}
@Override
public void changedUpdate(DocumentEvent e) {
button.setEnabled(textField.getText().length() > 0);
}
});
panel.add(textField);
panel.add(button);
add(panel, BorderLayout.NORTH);
add(new JScrollPane(table), BorderLayout.CENTER);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
private JTable createFilteredTable(String searchText) {
Vector<Vector<Object>> data = model.getDataVector();
Vector<String> columns = new Vector<>(model.getColumnCount());
for (int i = 0; i < model.getColumnCount(); i++) {
columns.add(model.getColumnName(i));
}
Vector<Vector<Object>> filteredData = new Vector<>();
for (Vector<Object> row : data) {
if (row.get(1).equals(searchText)) {
filteredData.add(row);
}
}
return new JTable(new DefaultTableModel(filteredData, columns));
}
@Override
public void actionPerformed(ActionEvent e) {
String searchText = textField.getText().trim();
JTable filteredTable = createFilteredTable(searchText);
JOptionPane.showMessageDialog(this, new JScrollPane(filteredTable));
}
public static void main(String[] args) {
new TableFilterDemo();
}
}
```
在上面的代码中,我们使用了 JTextField 和 JButton 创建了一个简单的 UI,使用 JTable 来显示数据。在点击按钮时,我们创建了一个新的表格来显示与文本框中输入的文本相匹配的行。这里我们使用了 JOptionPane 来显示新的表格。
注意,在实际开发中,你可能需要更复杂的算法来筛选数据,例如模糊匹配、大小写不敏感等等。此处代码仅为示例,供参考。
阅读全文