更新JTable中突出显示的行

时间:2013-05-26 23:47:00

标签: java swing user-interface jtable

我有一个JTable,其中包含一系列信息。我使用:

突出显示了一些行
myTable.addRowSelectionInterval(number,number);
myTable.setSelectionBackground(Color.yellow);

number只是要突出显示的行的编号。

我的程序从包含数字列表的文件中读取,然后突出显示相应的行。当我关闭程序并重新打开它时,突出显示的行将保持突出显示。

问题是,如果我使用

,我似乎无法更新JTable
addRowSelectionInterval(number,number);

有没有办法“刷新”JTable

我见过一些代码用于刷新表上的值,但这没有帮助。

我不知道是不是因为我只是突出显示行。

我使用的是默认JTable

我对“模特”一无所知。这是我第一次制作GUI。

任何人都可以告诉我该怎么做?我很乐意感谢任何帮助。 谢谢。

1 个答案:

答案 0 :(得分:1)

下面的sscce会产生预期的结果。作为@P。 Lalonde评论,确认您正在更新event dispatch thread上的选择。更新TableModel将自动更新视图,但当前选择是视图属性。

image

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();
            }
        });
    }
}
相关问题