我想要做的就是在用户点击一个按钮时显示JTable
中的一些数据并且它正常工作,但是会发生一些奇怪的事情。当我第一次点击按钮时没有任何反应,但是当我最大化帧时,表格会出现!
ActionListener
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
boolean state = external.isSelected();
DefaultTableModel model = new DefaultTableModel(ManhattanTable(values), Headers(values));
JTable table = new JTable(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
container.add(new JScrollPane(table));
table.setVisible(false);
if(state) {
PrintStream out = null;
try {
out = new PrintStream(new FileOutputStream("output.txt"));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.setOut(out);
long start= System.currentTimeMillis();
Manhattan(values);
long end=System.currentTimeMillis();
out.println("time: "+(end-start)+" milliseconds");
out.println("Number of input data: "+values.size());
} else {
table.setVisible(true);
}
}
});
任何人都知道,为什么会出现这种奇怪的行为?
答案 0 :(得分:6)
添加表格后,请致电container.revalidate()
答案 1 :(得分:2)
问题是您创建表并设置属性,但您没有告诉窗口重绘它的组件。当您更改窗口大小时,您将强制重绘。