2016-09-19 11 views
1

私のコードは以下の通りです。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(); 

    } 

} 
+0

'validate()'も試しましたか? http://stackoverflow.com/questions/1097366/java-swing-revalidate-vs-repaint – Sentry

+0

また、 'updateOnFlow'が実際に呼び出されたことを確認しましたか? 'Frame'インスタンスを' FlowListener'としてどこに登録しますか? – Sentry

+0

はい私は検証を試み、動作しませんでした。 updateOnFlowが呼び出され、updateOnFlow内のsystem.out.printlnで結果が取得され、別のクラスにFrameが登録されます。 – matel

答えて

1

私はこの問題は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(); 
    } 
} 
+0

これは本当にありがとうございます。私はsetmodelが見つからなかった – matel

+0

私は助けることができてうれしい。あなたはこの回答を正しいとマークすることができます。 – Sentry

関連する問題