【发布时间】:2020-06-16 20:53:27
【问题描述】:
我正在尝试实现 JFileChooser 以便能够从另一个程序制作的两个 .txt 文件中进行选择。我创建了一个相当简单的 JTable,它将根据我给它的路径从其中一个 .txt 文件中加载数据。但是我不知道如何使 JTable 实现 JFileChooser 以便能够选择任一文件并将数据显示在正确的单元格中。下面是 JTable 的代码和来自其中一个文件的一小部分数据
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
public class Maingui {
public static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
new Maingui().createUI();
}
};
EventQueue.invokeLater(r);
}
private void createUI() {
try {
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
JTable table = new JTable();
TableModel tableModel = new TableModel();
BufferedReader file = new BufferedReader(new FileReader("/Users/Will/Desktop/BenchmarkSortIterative.txt"));
String line;
file.readLine();
List<Line> iterativeList = new ArrayList<Line>();
while((line = file.readLine()) != null) {
String splits[] = line.split(" ");
String digits = line.replaceAll("[^0-9.]", "");
}
tableModel.setList(iterativeList);
table.setModel(tableModel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JScrollPane(table));
frame.setTitle("Benchmark Sorter");
frame.pack();
frame.setVisible(true);
} catch(IOException ex) {}
}
class Line {
private int size;
private int avgCount;
private int coefCount;
private int avgTime;
private int coefTime;
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int getAvgCount() {
return avgCount;
}
public void setAvgCount(int avgCount) {
this.avgCount = avgCount;
}
public int getCoefCount() {
return coefCount;
}
public void setCoefCount(int coefCount) {
this.coefCount = coefCount;
}
public int getAvgTime() {
return avgTime;
}
public void setAvgTime(int avgTime) {
this.avgTime = avgTime;
}
public int getCoefTime() {
return coefTime;
}
public void getCoefTime(int coefTime) {
this.coefTime = coefTime;
}
}
class TableModel extends AbstractTableModel {
private List<Line> list = new ArrayList<Line>();
private String[] columnNames = { "Size", "Avg Count", "Coef Count", "Avg Time", "Coef Time"};
public void setList(List<Line> list) {
this.list = list;
fireTableDataChanged();
}
@Override
public String getColumnName(int column) {
return columnNames[column];
}
public int getRowCount() {
return list.size();
}
public int getColumnCount() {
return columnNames.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return list.get(rowIndex).getSize();
default:
return null;
}
}
}
}
来自 .txt 的数据
Data Set Size (n): 100
Iterative Selection Sort Results:
Average Critical Operation Count: 1090
Standard Deviation of Count: 770
Average Execution Time: 10340
【问题讨论】:
标签: java swing jtable jfilechooser