JPanelから継承したコンポーネントがあり、その上にグリッドを描画します。これでJComboBoxができたので、ユーザーがここでグリッドサイズを選択し、ボタンを押してグリッドを変更(グリッドを再描画)できるようにします。
最初のグリッドをペイントしますが、ユーザーがJComboBoxからグリッドサイズを選択してボタンをクリックすると、何も起こりません。フォームを最小化してから再度復元して、変更を確認する必要があります。
何か案は?コードは以下のとおりです。
public class Board extends JPanel {
...
protected void paintComponent(Graphics og) {
super.paintComponent(og);
...
}
}
}
public class Main extends javax.swing.JFrame {
...
public Main() { //This works great.
board = new Board( ... );
somePanel.add(board, BorderLayout.CENTER);
}
public void someButtonActionPerformed(Event e) { //This is not working
somePanel.remove(board);
board = new Board( ... );
somePanel.add(board);
somePanel.invalidate()
board.repaint();
}
somePanel.revalidate()
を呼び出してみてください。これにより、コンポーネントツリーが変更されたことがAWTに通知されます。
編集:invalidate
からrevalidate
に変更されました