[英]JTable with 2 different data
我正在使用JTable,根據所按下的按鈕在其上加載不同的數據。
問題是:當加載一個數據時,如果我嘗試加載另一個數據,並將鼠標移到標題或單元格上,則如果有數據,它將使用來自第一個輸入的數據更新標題/單元格在所選的標題/單元格上。
關於如何解決的任何想法? 那就是我正在使用的代碼。
private static void setCompromissosTable(Object[][] data, Object[] header){
try{
compromissosTable.removeAll();
} catch(Exception e){
e.printStackTrace();
}
compromissosTable = new JTable(data, header);
compromissosTable.setRowSelectionAllowed(true);
// Make the entire row selectable, but not editable
int columnMax = compromissosTable.getColumnCount();
for(int column = 0; column < columnMax; column++){
Class<?> col_class = compromissosTable.getColumnClass(column);
compromissosTable.setDefaultEditor(col_class, null);
}
scrollPane = new JScrollPane(compromissosTable);
pane.add(scrollPane);
scrollPane.setBounds(btnAddCompromisso.getX(),
btnAddCompromisso.getHeight() + btnAddCompromisso.getY() + 5
, frame1.getWidth() - 20
, frame1.getHeight() - 20);
compromissosTable.revalidate();
compromissosTable.repaint();
compromissosTable.addMouseListener(new MouseAdapter() {}
//Change mouse behavior.
);
}
這可疑...
compromissosTable = new JTable(data, header);
//...
scrollPane = new JScrollPane(compromissosTable);
pane.add(scrollPane);
基本上,假設每次要切換數據集時,都在調用此方法,則每次都創建一個新的JTable
和JScrollPane
,然后將其添加到UI中。
那以前的JTable
呢?
接下來是這個...
scrollPane.setBounds(btnAddCompromisso.getX(),
btnAddCompromisso.getHeight() + btnAddCompromisso.getY() + 5
, frame1.getWidth() - 20
, frame1.getHeight() - 20);
看起來您正在使用null
布局。 基本上是“看起來”正在發生的事情,是您只是將JScrollPane
彼此堆疊在一起,這部分解釋了圖形故障,因為組件實際上是在相同的z深度處添加的(基本上是),並且彼此競爭,然后對其進行更新。
兩個簡單的答案...
null
布局。 當然,他們“似乎”是個好主意,但是他們傾向於以奇怪而奇妙的方式轉過身咬你,這很難診斷和修復。 使用Swing圍繞其設計的布局管理API JTable
的模型,而不是每次都創建一個新的JTable
/ JScrollPane
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.