0

我有一个JTable信息列表。我使用以下方法突出显示了一些行:

myTable.addRowSelectionInterval(number,number);
myTable.setSelectionBackground(Color.yellow);

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

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

JTable问题是如果我使用我似乎无法更新我的

addRowSelectionInterval(number,number);

有没有办法“刷新” a JTable

我已经看到一些用于刷新表中值的代码,但这并没有帮助。

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

我正在使用默认的JTable.

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

谁能告诉我该怎么做?我很乐意为您提供任何帮助。谢谢你。

4

1 回答 1

1

下面的sscce产生了预期的结果。作为@P。Lalonde 评论,确认您正在更新事件调度线程上的选择。更新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();
            }
        });
    }
}
于 2013-05-27T01:57:40.847 回答