-1
我想製作一個JTable,其中文本文件是逐行使用2d數組讀取的,僅用於行循環。我如何循環在DefaultTableModel
的行。將文本文件讀取到jtable
這裏是我的代碼:
try{
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("Database.txt"))));
String line = "";
int width = 0, height = 0;
while((line = br.readLine())!=null){
if(width == 0){
String data[] = line.split("-");
width = data.length;
}
height++;
String matrix[][] = new String[height][width];
model = new DefaultTableModel(matrix, col);
table = new JTable(model){
public boolean isCellEditable(int row, int column){
return false;
}};
}
}catch (IOException ex){
ex.printStackTrace();
}
這裏是整個代碼:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.table.*;
import java.io.*;
import java.util.*;
public class Administrator extends JFrame {
private String col []= {"Account No.","PinCode","First Name",
"Last Name", "MI","BirthDate","Sex","E-mail","Address"};
private JScrollPane scroll;
private JTable table;
private DefaultTableModel model;
public Administrator(){
//ImageIcon bcr = new ImageIcon(getClass().getResource("/images/bcr.jpg"));
final JButton back = new JButton("back");
back.setLocation(20,480);
back.setSize(70,30);
back.setPreferredSize(new Dimension(90,30));
back.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
dispose();
}
}
);
try{
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("Database.txt"))));
String line = "";
int width = 0, height = 0;
while((line = br.readLine())!=null){
if(width == 0){
String data[] = line.split("-");
width = data.length;
}
height++;
String matrix[][] = new String[height][width];
model = new DefaultTableModel(matrix, col);
table = new JTable(model){
public boolean isCellEditable(int row, int column){
return false;
}
};
}
}
catch (IOException ex){
ex.printStackTrace();
}
DefaultTableCellRenderer cent = new DefaultTableCellRenderer();
cent.setHorizontalAlignment(JLabel.CENTER);
table.getColumnModel().getColumn(0).setCellRenderer(cent);
table.getColumnModel().getColumn(1).setCellRenderer(cent);
table.getColumnModel().getColumn(2).setCellRenderer(cent);
table.getColumnModel().getColumn(3).setCellRenderer(cent);
table.getColumnModel().getColumn(4).setCellRenderer(cent);
table.getColumnModel().getColumn(5).setCellRenderer(cent);
table.getColumnModel().getColumn(6).setCellRenderer(cent);
table.getColumnModel().getColumn(7).setCellRenderer(cent);
table.getColumnModel().getColumn(0).setPreferredWidth(100);
table.getColumnModel().getColumn(1).setPreferredWidth(100);
table.getColumnModel().getColumn(2).setPreferredWidth(100);
table.getColumnModel().getColumn(3).setPreferredWidth(100);
table.getColumnModel().getColumn(4).setPreferredWidth(50);
table.getColumnModel().getColumn(5).setPreferredWidth(100);
table.getColumnModel().getColumn(6).setPreferredWidth(50);
table.getColumnModel().getColumn(7).setPreferredWidth(120);
scroll = new JScrollPane(table);
scroll.setLocation(20, 320);
scroll.setSize(750,150);
Container pane = getContentPane();
pane.setLayout(null);
pane.add(back);
pane.add(scroll);
/*setIconImage(new ImageIcon("/images/icon.jpg").getImage());
setLayout(new BorderLayout());
JLabel www = new JLabel(new ImageIcon(getClass().getResource("/images/admin.jpg")));
add(www);*/
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setTitle("Account Profile");
setSize(800,550);
setResizable(false);
setVisible(true);
setLocation(110, 30);
}
public static void main(String[]args){
new Administrator();
}
}
要讀出迴應這裏:http://stackoverflow.com/a/11001018/1427124 – DaoWen 2013-03-01 16:42:33
這將是非常有用的,如果你添加更多的細節。就像Java的版本,你的老闆的薪水和你的桌子應該工作的環境條件(即溫度)。你知道,這是一個系統。每條信息都可能有用。不需要簡單地詢問如何將一行添加到表中。 – Val 2013-03-01 16:58:19