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