java 实现在文本读取信息并在文件中查询,同时显示在jtable表格中代码实现
时间: 2024-03-22 18:42:49 浏览: 81
以下是一个简单的 Java 实现,可以从文本文件中读取信息并查询,然后将结果显示在 JTable 中:
```java
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class TextFileSearch extends JFrame implements ActionListener {
private JTable table;
private DefaultTableModel model;
private JTextField searchField;
private JButton searchButton;
public TextFileSearch() {
super("Text File Search");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600, 400);
setLocationRelativeTo(null);
// 创建表格
table = new JTable();
model = new DefaultTableModel(new Object[]{"Name", "Age", "Gender", "Address"}, 0);
table.setModel(model);
// 创建搜索框和按钮
searchField = new JTextField(20);
searchButton = new JButton("Search");
searchButton.addActionListener(this);
// 创建面板并添加组件
JPanel searchPanel = new JPanel();
searchPanel.add(searchField);
searchPanel.add(searchButton);
add(searchPanel, BorderLayout.NORTH);
add(new JScrollPane(table), BorderLayout.CENTER);
}
// 处理搜索按钮点击事件
public void actionPerformed(ActionEvent e) {
if (e.getSource() == searchButton) {
String keyword = searchField.getText();
List<String[]> result = search(keyword);
displayResult(result);
}
}
// 从文件中读取信息并查询
private List<String[]> search(String keyword) {
List<String[]> result = new ArrayList<String[]>();
try {
BufferedReader reader = new BufferedReader(new FileReader("data.txt"));
String line;
while ((line = reader.readLine()) != null) {
String[] fields = line.split(",");
if (fields[0].contains(keyword) || fields[3].contains(keyword)) {
result.add(fields);
}
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
// 在表格中显示查询结果
private void displayResult(List<String[]> result) {
model.setRowCount(0);
for (String[] row : result) {
model.addRow(row);
}
}
public static void main(String[] args) {
TextFileSearch frame = new TextFileSearch();
frame.setVisible(true);
}
}
```
上面的代码中,将文本文件的每一行按照逗号分隔为一个字符串数组,然后根据关键字查询并将符合条件的行添加到结果列表中,最后将结果列表显示在 JTable 中。在实际使用中,需要根据具体的需求修改代码。
阅读全文