[英]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.