java在swing中的JTable中显示旧值
在这个代码块中,我在点击滚动窗格内部后得到了旧值,然而新值最初在获取时也会消失,但它们会慢慢消失,旧值会出现在那个地方
我尝试了几种组合,但未能达到预期的效果。此外,在变量声明期间,我将所有变量都设置为非静态变量,但框架除外,我认为框架不相关且不推荐,我还将组件嵌入框架本身
//THE TABLE
table = new JTable();
//THE COLUMN
String[] columns = new String[] {
"Serial No", "BundleId", "Bundle Count", "Record Count","Status","Date"
};
//THE ROW
Object[][] data = dc.Success(date,afterDate);
final Class[] columnClass = new Class[] {
Boolean.class,String.class, String.class, String.class,String.class,String.class };
//create table model with data
DefaultTableModel model = new DefaultTableModel(data, columns) {
@Override
public boolean isCellEditable(int row, int column)
{
return false;
}
@Override
public Class<?> getColumnClass(int columnIndex)
{
return columnClass[columnIndex];
}
public Object getCellEditorValue() {
return "";
}
};
// JTable table = new JTable(model);
table.setModel(model);
//add the table to the frame
//ADD SCROLLPANE
scroll.setBounds(70, 80, 600, 400);
scroll.setViewportView(table);
frame.getContentPane().add(scroll);
// this.add(new JScrollPane(table));
// table.setAutoCreateRowSorter(true);
table.setPreferredScrollableViewportSize(new Dimension(320, 160));
TableColumn tc = table.getColumnModel().getColumn(BOOLEAN_COL);
tc.setHeaderRenderer(new SelectAllHeader(table, BOOLEAN_COL));
this.setTitle("Table Example");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
this.setVisible(true);
table.repaint();
# 1 楼答案
如果要将数据的更改通知JTable,请使用类似于^{} 的方法
还有其他方法可用于更新特定范围的数据^{} 可能对你特别有用。这是因为您建议仅在单击某一行时更新该行。如果情况并非如此,请坚持使用^{}
从您的评论中,我注意到您试图触发一个数据更改事件,然后无论如何都要更改整个模型。这不是必需的,如果您的模型保留旧的值,这实际上可能是问题的根源
相反,您应该更改当前模型的
DataVector
。要更改单行上的数据,可以使用以下代码摘录。摘录下面有一个完整的例子完整示例