我有一个继承自JPanel的组件,我在上面画了一个网格。现在我有一个JComboBox,我希望用户能够在此处选择网格大小,然后按下按钮使网格更改(重新绘制网格)。
问题是它绘制了初始网格,但一旦用户从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();
}
someButtonActionPerformed
方法实际上是否被调用了?你是否添加了System.out.println
进行检查? - Cameron Skinnerinvalidate
,validate
和revalidate
,我建议你先去看一下。它们很容易出错。 - Cameron Skinner