0

不知道如何写标题而不使它成为一个段落。

基本上我的JTable程序中有一个不能让用户编辑的内容。但是程序必须能够自己编辑它。此外,必须允许用户从表格中的单元格中实际选择和复制文本,而不是对其进行编辑。

我怎样才能做到这一点?最好是通用解决方案,以便它可以应用于我的程序中具有不同布局等的多个表。

4

2 回答 2

3

您需要将表格的选择属性设置为 true,如下所示。您还必须确保该isCellEditable方法被覆盖并设置为 false,AbstractTableModel该类默认执行此操作。

  final JTable table = new JTable(new AbstractTableModel() {

        @Override
        public Object getValueAt(int r, int c) {
            return data[r][c];
        }

        @Override
        public int getRowCount() {
            return data.length;
        }

        @Override
        public int getColumnCount() {
            return data[1].length;
        }

    });

    table.setRowSelectionAllowed(true);
    table.setColumnSelectionAllowed(true);
    table.setCellSelectionEnabled(true);

这将允许单独突出显示单元格并从中复制,但不允许编辑单元格。

编辑:改变答案!

于 2012-12-18T21:00:24.043 回答
0

Tom 的解决方案允许您单击一个单元格并按 Ctrl+C 复制其全部内容。如果您希望能够选择单元格内的文本区域,您可以执行以下操作:

JTable table = new JTable(...);

JTextField textField = new JTextField();
textField.setEditable(false);
table.setDefaultEditor(String.class, new javax.swing.DefaultCellEditor(textField));

然后确保您TableModel.isCellEditable返回true任何您希望能够从中复制的单元格。

(如果你走这条路,你可以跳过允许/启用行/列/单元格选择。)

于 2013-12-07T02:22:56.777 回答