[英]Java - Setting JTable as uneditable using a text Area
我读过我可以使用文本区域,在其中将表放到该区域,然后将文本区域设置为不可编辑,这将使该表不可编辑。
但是当我这样做时,文本区域不显示它包含的表,而是仅显示文本区域本身。
这是我的方法
JTable cart;
DefaultTableModel model;
JTextArea tArea = new JTextArea();
..
model = new DefaultTableModel(data,columnName);
cart = new JTable(model);
tArea.add(cart);
tArea.setEditable(false);
scroll = new JScrollPane(tArea);
scroll.setBounds(10,130, 700, 400);
.
.
add(scroll);
知道我弄错了什么吗?
正如Guillaume Polet指出的那样,我同意使用JTextArea在JTable中设置/更改状态是不方便的。
根据您的要求,我会考虑以下选项:
如果您不希望表可编辑,则可以重写表isCellEditable方法:
JTable table = new JTable( model )
{
@Override
public boolean isCellEditable( int row, int column )
{
return false;
}
};
或为某种NonEditableTable子类化JTable。 这样做的好处是,无论将什么模型添加到该表中,您的表都将永远不可编辑。 确实,这也可能是不利的,因为如果您的可编辑状态取决于显示的数据,那么您将无法再更改表的状态。
在这种情况下,无论是扩展DefaultTableModel还是AbstractTableModel并重写该类中的方法来控制那里的行为,实现自己的TableModel都是更可取的(如Guillaume Polet所述)。
class MyTableModel extends AbstractTableModel
{
@Override
public boolean isCellEditable( int rowIndex, int columnIndex )
{
if ( /*FILL IN YOUR REQUIREMENTS TO BE EDITABLE*/ )
return true;
return false
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.