JFrame在收到事件后不绘画
问题描述:
我有我的代码在下面,我试图接收m_rows这是一个数组。它看起来像保持空白,我的框架保持空白。我可以看到班上收到了这个活动。我认为我的班级表工作正常。在接收到来自监听器的m_rows并将它传递给TableModel(m_rows)之间的代码中,你看到下面的代码有什么明显的错误吗?JFrame在收到事件后不绘画
感谢
class Frame extends JFrame implements FlowListener {
private List<Candle> m_rows = new ArrayList<Candle>();
public Frame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("Ma premiere fenetre");
setBounds(50, 100, 1000, 800);
Container conteneur = new JPanel();
TableModel tableModel = new TableModel(m_rows);
JTable table = new JTable(tableModel);
JPanel tablePanel = new JPanel();
tablePanel.add(table);
conteneur.setLayout(new GridLayout(2, 1));
conteneur.add(tablePanel);
this.add(conteneur);
this.setVisible(true);
}
@Override
public void updateOnFlow(List<Candle> newFlow) {
m_rows = newFlow;
this.repaint();
}
}
答
我认为问题是,要m_row
分配的东西对TableModel
没有影响。试试这个:
class Frame extends JFrame implements FlowListener {
private JTable table;
...
public Frame() {
...
TableModel tableModel = new TableModel(m_rows); // Did you mean DefaultTableModel?
table = new JTable(tableModel);
...
}
@Override
public void updateOnFlow(List<Candle> newFlow) {
m_rows = newFlow;
TableModel tableModel = new TableModel(m_rows);
table.setModel(tableModel);
this.repaint();
}
}
你也试过'validate()'? http://stackoverflow.com/questions/1097366/java-swing-revalidate-vs-repaint – Sentry
此外,你检查'updateOnFlow'真的被称为?你在哪里注册'Frame'实例为'FlowListener'? – Sentry
是的,我尝试验证,而不是工作。 updateOnFlow被调用,我在updateOnFlow中的system.out.println上得到结果,Frame在另一个类中注册。 – matel