我有一个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, …Run Code Online (Sandbox Code Playgroud)