【发布时间】:2019-05-29 16:23:27
【问题描述】:
我试图在运行时添加一行,但它一直在中断。这只是一个简单的测试,可以让一切正常工作。只有在将所有内容添加到表格后,它才会显示所有内容,但在那之前它会显示黑色窗口。
public static void main(String[] args) throws IOException, InterruptedException{
JFrame dashboard = new JFrame("Dashboard");
dashboard.setVisible(true);
dashboard.setTitle("Dashboard Information");
dashboard.setBounds((960 - 250), (540 - 250), 500, 500);
DefaultTableModel model = new DefaultTableModel();
JTable table = new JTable(model);
dashboard.add(new JScrollPane(table));
model.addColumn("Col2");
model.addColumn("Col1");
model.addColumn("Col3");
model.addRow(new Object[] {"test", 1, "test"});
for (int i = 0; i < 10; i++) {
model.addRow(new Object[] {"test2", 2, "test2"});
Thread.sleep(100);
}
dashboard.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
dashboard.pack();
}
【问题讨论】:
-
好吧,你一开始就违反了 API 的单线程特性
-
对我来说很好用.. 可能是您的系统渲染它的时间太长.. 尝试更改为
Thread.sleep(2000);以给它时间渲染.. 还将最后 2 个语句移到 for -loop 因为你阻塞了主线程 -
As a more accurate example 这将允许从后台线程向表中添加行,这不会违反 API 的单线程性质
标签: java