JPanel重绘问题
我有一个JFrame,其中包含2个JPanel子类和BorderLayout中的2个JLabel。其中一个JPanel包含JButtons,另一个用于显示图形。JLabels位于北部和南部,西部是JPanel按钮,中间是JPanel。
显示JPanel需要不断刷新,所以我通过swing计时器生成的动作事件调用它的repaint()方法。我也覆盖它的paintComponent()方法来做我的绘图。
而不是显示我绘制的内容,“JFrame的内容”被绘制到显示JPanel上。我知道在完成绘图之前,我可以通过使用g.fillRect()或super.paintComponent()简单地“清除”显示JPanel。
我只是好奇为什么会这样。
我正在使用jdk 1.6u27。下面是我的代码:
package test;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class Main {public static void main(String[] args) { Simulation sim = new Simulation(); }}class Simulation extends JFrame { public JLabel state; private JLabel id; private ButtonPanel control; private Display display; public Simulation() { id = new JLabel("Test"); state = new JLabel("Test"); control = new ButtonPanel(); display = new Display(this); this.setLayout(new BorderLayout()); this.add(id, BorderLayout.NORTH); this.add(control, BorderLayout.WEST); this.add(display, BorderLayout.CENTER); this.add(state, BorderLayout.SOUTH); this.setSize(500, 600); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public ButtonPanel getControl() { return this.control; }}class ButtonPanel extends JPanel implements ActionListener { public JButton b[] = new JButton[8]; public boolean bp[] = new boolean[8]; public ButtonPanel() { this.setLayout(new GridLayout(8, 1)); for (int i = 0; i < b.length; i++) { b[i] = new JButton(""+i); b[i].addActionListener(this); bp[i] = false; this.add(b[i]); } }
FFIVE
宝慕林4294392
相关分类