我有一个JTable
,其中包含一系列信息。我使用:
myTable.addRowSelectionInterval(number,number);
myTable.setSelectionBackground(Color.yellow);
number
只是要突出显示的行的编号。
我的程序从包含数字列表的文件中读取,然后突出显示相应的行。当我关闭程序并重新打开它时,突出显示的行将保持突出显示。
问题是,如果我使用
,我似乎无法更新JTable
addRowSelectionInterval(number,number);
有没有办法“刷新”JTable
?
我见过一些代码用于刷新表上的值,但这没有帮助。
我不知道是不是因为我只是突出显示行。
我使用的是默认JTable
。
我对“模特”一无所知。这是我第一次制作GUI。
任何人都可以告诉我该怎么做?我很乐意感谢任何帮助。 谢谢。
答案 0 :(得分:1)
下面的sscce会产生预期的结果。作为@P。 Lalonde评论,确认您正在更新event dispatch thread上的选择。更新TableModel
将自动更新视图,但当前选择是视图属性。
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
/** @see http://stackoverflow.com/a/16765450/230513 */
public class Test {
private void display() {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table = new JTable(
new String[][]{{"One"},{"Two"}, {"Three"}},
new String[]{"Ordinal"});
table.addRowSelectionInterval(1, 1);
f.add(new JScrollPane(table));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new Test().display();
}
});
}
}