创建一个在jframe中显示的不可编辑的jtable

时间:2014-10-29 00:26:16

标签: java swing jtable jframe

我今天遇到了jtables,作为表示从数据库中检索的信息的一种很好的方式,例如,如下面的代码:

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class JTableCreatingDemo {
  public static void main(String args[]) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Object rowData[][] = { { "Row1-Column1", "Row1-Column2", "Row1-Column3" },
        { "Row2-Column1", "Row2-Column2", "Row2-Column3" } };
    Object columnNames[] = { "Column One", "Column Two", "Column Three" };
    JTable table = new JTable(rowData, columnNames);

    JScrollPane scrollPane = new JScrollPane(table);
    frame.add(scrollPane, BorderLayout.CENTER);
    frame.setSize(300, 150);
    frame.setVisible(true);

  }
}

我唯一不喜欢的是,如果我点击表格条目,我可以更改它们。我不喜欢这样。我想知道是否有办法阻止这种情况发生?

1 个答案:

答案 0 :(得分:2)

您可以使用AbstractTableModel,但这可能比您准备的工作更多,而是使用DefaultTableModel并覆盖它isCellEditable方法返回false

例如......

DefaultTableModel model = new DefaultTableModel(rowData, columnNames) {
    @Override
    public boolean isCellEditable(int row, int column) {
        return false;
    }
};
JTable table = new JTable(model);

有关详细信息,请参阅How to Use Tables