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]);
}
}
3 回答
FFIVE
TA贡献1797条经验 获得超6个赞
我知道,我不知道有这样的选择,谢谢你的解释。但我的问题实际上是JFrame的内容被绘制到显示JPanel上。例如,顶部标签和侧面按钮被绘制到显示器JPanel上,以及那些黑色线条
添加回答
举报
0/150
提交
取消