如何在Java中重新绘制
我正在修GUI编程的课程。我很难理解如何使用“重新绘制我的长方体”类将其绘制为不同的颜色。 这是我的GUI类:如何在Java中重新绘制,java,swing,repaint,Java,Swing,Repaint,我正在修GUI编程的课程。我很难理解如何使用“重新绘制我的长方体”类将其绘制为不同的颜色。 这是我的GUI类: public class Box extends JPanel { private Color color; private int boxNumber; public Box(Color color, int boxNumber){ this.boxNumber = boxNumber; this.color = colo
public class Box extends JPanel {
private Color color;
private int boxNumber;
public Box(Color color, int boxNumber){
this.boxNumber = boxNumber;
this.color = color;
}
public void changeColor(){
setBackgroundColor(Color.WHITE);
repaint();
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
setBackground(color);
}
}
下面是我将其添加到框架中的位置:
public class MainHeader {
Box box[];
public MainHeader(){
}
private void setBox(){
box = new Box[4];
Color color[] = {Color.RED, Color.YELLOW, Color.BLUE, Color.ORANGE};
for(int i = 0; i < color.length; i ++){
box[i] = new Box(color[i],i);
}
}
private void gui(){
JFrame f = new JFrame();
f.setLayout(new GridLayout(2,2,1,1));
setBox();
for(Box b : box)
f.add(b);
f.setSize(500,500);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setResizable(false);
f.setVisible(true);
}
}
public类主标题{
方框[];
公共MainHeader(){
}
私有void setBox(){
盒子=新盒子[4];
颜色[]={Color.RED,Color.YELLOW,Color.BLUE,Color.ORANGE};
for(int i=0;i
首先,您不需要这样做
protected void paintComponent(Graphics g){
super.paintComponent(g);
setBackground(color);
}
您永远不希望在任何绘制方法中更改任何组件的状态,这只会导致无休止的问题,并可能导致程序崩溃,因为它会消耗CPU周期
其次,您的框
类的构造函数从不设置框
的背景色。实际上,您不需要维护对颜色值的引用,因为框通过其固有特性已经支持此功能
public Box(Color color, int boxNumber){
this.boxNumber = boxNumber;
setBackground(color);
}
看起来您需要将box[]数组馈送到您在另一个类中创建的构造函数中。