gpt4 book ai didi

java - 如何在Java中重绘

转载 作者:行者123 更新时间:2023-12-02 04:48:01 25 4
gpt4 key购买 nike

我正在学习 GUI 编程类(class)。我很难理解如何将我的 Box 类重新绘制为不同的颜色。这是我的 GUI 类:

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);
}
}

这是我将其添加到Frame的位置:

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);
}
}

最佳答案

首先,您不需要这样做...

protected void paintComponent(Graphics g){
super.paintComponent(g);
setBackground(color);
}

您永远不想在任何绘制方法中更改任何组件的状态,这只会导致无穷无尽的问题,并且可能会导致您的程序崩溃,因为它会消耗 CPU 周期...

其次,您的 Box 类的构造函数永远不会设置 Box 的背景颜色。您实际上不需要维护对颜色值的引用,因为 Box 通过其继承性已经支持此功能

public Box(Color color, int boxNumber){
this.boxNumber = boxNumber;
setBackground(color);
}

关于java - 如何在Java中重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29504338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com