可以自己转换下或自定义一个tablemodel;示例:import java.util.ArrayList;
import java.util.List;import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;public class JTableDemo { public static void main(String[] args) {

final JTableDemo demo = new JTableDemo();

SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
JFrame frame = new JFrame();
frame.setSize(300, 200);
JTable table = new JTable(demo.new MyTableModel(demo.getDataList(), demo.getColName()));
frame.getContentPane().add(table);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
public List<Book> getDataList(){
List<Book> list = new ArrayList<Book>();
for(int i = 0; i < 5; i++){
Book book = new Book("Book"+i, "201404180"+i, 10.0*i);
list.add(book);
}
return list;
}

public List<String> getColName(){
List<String> list = new ArrayList<String>();
list.add("Book Name");
list.add("ISIN");
list.add("Price");
return list;
}

@SuppressWarnings("serial")
class MyTableModel extends DefaultTableModel{ List<Book> rowList;
List<String> colList;


MyTableModel(List<Book> rowList, List<String> colList){
this.rowList = rowList;
this.colList = colList;
setDataVector(getRowDataFromList(), getColDataFromList());
}

private Object[][] getRowDataFromList() {
Object[][] dataObj = null;
if(rowList != null && rowList.size() > 0){
dataObj = new Object[rowList.size()][colList.size()];
 for (int row = 0; row < rowList.size(); row++) {
 dataObj[row][0] = rowList.get(row).getBookName();
 dataObj[row][1] = rowList.get(row).getISIN();
 dataObj[row][2] = rowList.get(row).getPrice();
 }
}

return dataObj;
}

private Object[] getColDataFromList() {
Object[] colObj = null;
if(colList !=null && colList.size() > 0){
colObj = new Object[colList.size()];
for (int col = 0; col < colList.size(); col++) {
colObj[col] = colList.get(col);
 }
}

return colObj;
}
}

class Book{
String bookName;
String ISIN;
Double price;

Book(String bookName, String ISIN, Double price){
this.bookName = bookName;
this.ISIN = ISIN;
this.price = price;
}

public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getISIN() {
return ISIN;
}
public void setISIN(String iSIN) {
ISIN = iSIN;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
}
}

解决方案 »

  1.   

    假设有一家商店,需要一个存货目录来记录每种工具的名称、数量、价格。工具的初始信息存放在hardware.dat 文件中。GUI界面包括一个面板和两个按钮。按下“显示”按钮,面板以表格形式显示工具信息。可以在卖货或进货(该商店可能买入新品种工具)后,在GUI界面上对工具信息进行更新,按下“提交”按钮,更新后的信息保存到文件中。
    题目是这样的,我刚开始没看见要用表格显示只是把它显示出来,表格显示要用到Jtable的哪些方法啊,求点拨一下。谢谢。
      

  2.   

    第一“显示”就没什么好说的;
    第二“提交”:
    你只需在数据提交后调用:
    jtable.getModel()
     
    获取TableModel,然后调用:
    tablemodel.getRowDataFromList(dataList); 就是我上面给你的那个示例方法;或自己写个方法把数据给tablemode;最后调用:
    tablemodel.fireTableDataChanged();
    就可以把更新后的数据显示出来了; 
      

  3.   


    看你也是很辛苦,简单示例下,其他自己思考实现了;import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JTable;
    import javax.swing.SwingUtilities;
    import javax.swing.table.DefaultTableModel;public class JTableDemo { static Random ram = new Random(37);

    public static void main(String[] args) {

    final JTableDemo demo = new JTableDemo();

    SwingUtilities.invokeLater(new Runnable() {

    @Override
    public void run() {
    final JFrame frame = new JFrame();
    frame.setSize(300, 200);
    final JTable table = new JTable(demo.new MyTableModel(demo.getDataList(), demo.getColName()));
    frame.getContentPane().add(table, BorderLayout.CENTER);
    JPanel panel = new JPanel();
    JButton subButton = new JButton("提交");
    subButton.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
    MyTableModel tm = (MyTableModel)table.getModel();
    List<Book>  list = tm.getRowList();

    list.add(demo.new Book("Book-" + ram.nextInt(10000), "123-"+ram.nextInt(10000), 123.00));

    tm.setRowList(list);
    tm.fireTableDataChanged();
    }
    });
    JButton disButton;
    panel.add(disButton = new JButton("显示"));
    disButton.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
    JOptionPane.showMessageDialog(frame, "自己实现!!");
    }
    });
    panel.add(subButton);
    frame.getContentPane().add(panel, BorderLayout.SOUTH);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    }
    });
    }
    public List<Book> getDataList(){
    List<Book> list = new ArrayList<Book>();
    for(int i = 0; i < 5; i++){
    Book book = new Book("Book"+i, "201404180"+i, 10.0*i);
    list.add(book);
    }
    return list;
    }

    public List<String> getColName(){
    List<String> list = new ArrayList<String>();
    list.add("Book Name");
    list.add("ISIN");
    list.add("Price");
    return list;
    }

    @SuppressWarnings("serial")
    class MyTableModel extends DefaultTableModel{ List<Book> rowList;
    List<String> colList;

    public void setRowList(List<Book> rowList){
    this.rowList = rowList;
    setDataVector(getRowDataFromList(), getColDataFromList());
    }

    MyTableModel(List<Book> rowList, List<String> colList){
    this.rowList = rowList;
    this.colList = colList;
    setDataVector(getRowDataFromList(), getColDataFromList());
    }

    public List<Book> getRowList(){
    return rowList ;
    }

    private Object[][] getRowDataFromList() {
    Object[][] dataObj = null;
    if(rowList != null && rowList.size() > 0){
    dataObj = new Object[rowList.size()][colList.size()];
     for (int row = 0; row < rowList.size(); row++) {
     dataObj[row][0] = rowList.get(row).getBookName();
     dataObj[row][1] = rowList.get(row).getISIN();
     dataObj[row][2] = rowList.get(row).getPrice();
     }
    }

    return dataObj;
    }

    private Object[] getColDataFromList() {
    Object[] colObj = null;
    if(colList !=null && colList.size() > 0){
    colObj = new Object[colList.size()];
    for (int col = 0; col < colList.size(); col++) {
    colObj[col] = colList.get(col);
     }
    }

    return colObj;
    }
    }

    class Book{
    String bookName;
    String ISIN;
    Double price;

    Book(String bookName, String ISIN, Double price){
    this.bookName = bookName;
    this.ISIN = ISIN;
    this.price = price;
    }

    public String getBookName() {
    return bookName;
    }
    public void setBookName(String bookName) {
    this.bookName = bookName;
    }
    public String getISIN() {
    return ISIN;
    }
    public void setISIN(String iSIN) {
    ISIN = iSIN;
    }
    public Double getPrice() {
    return price;
    }
    public void setPrice(Double price) {
    this.price = price;
    }
    }
    }