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

标签 java swing jtable jframe

我今天遇到了 jtable,它是一种表示从数据库检索信息的好方法,例如,如以下代码所示:

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);

  }
}

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

最佳答案

您可以使用 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了解更多详情

关于java - 创建一个在 jframe 中显示的不可编辑的 jtable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26620853/

相关文章:

java - 将小程序迁移到 JWS

java - 捕获 IllegalArgumentException 的最佳方法是什么

java - 通过java程序改变网络设置

java - Swing JTable 黑客

java - 如何在 jFrame 中隐藏 jTable

java - 如何向 JTable 添加一个空行?

java - JTable选择和删除

java - 如何忽略 Java 中抛出 RuntimeException 的函数调用?

java - 通过 CGLIB 代理时方法注释为 null

java - 如何在 NetBeans GUI Builder 中包含自定义面板?