Как перекрасить JPanel после того, как нарисовали на нем?
у меня есть компонент, который наследуется от 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();
}
1 ответов
позвонить somePanel.revalidate()
. Это скажет AWT, что вы изменили дерево компонентов.
EDIT: изменено с invalidate
to revalidate