gpt4 book ai didi

Java setBackground() 混淆

转载 作者:行者123 更新时间:2023-11-29 05:23:56 27 4
gpt4 key购买 nike

我是 Java swing 库的新手,目前在设置 JFrame 的背景时遇到了一些问题。

我已阅读 jframe-setbackground-not-working-why和其中的链接,但它似乎不适合这里。

这是我的代码:

public class Board extends JPanel{

public enum pointType{
EMPTY,
CARRIER,
BALL;
}

private class Point{
int x;
int y;
pointType type;

public void paint (Graphics2D g2){
// color changes depends on pointType
g2.setColor(Color.WHITE);
g2.fillOval(x,y,25,25);
}
}

Point[][] myBoard;

public Board(){
//constructor, myBoard = 2d List of points
}

//.. other methods and class variables

public void paint(Graphics g){
Graphics2D g2 = (Graphics2D) g;
for(int k =HEIGHT; k>=0; k--){
for(int i=WIDTH; i>=0; i--){
// call paint method for each points on board
myBoard[i][k].print(g2);
}
}
}

public static void main(String[] args){
Board board = new Board();
JFrame myFrame = new Jframe("Game");

myFrame.add(board);
board.setBackground(Color.YELLOW);
myFrame.setVisible(true);

mtFrane.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

我的代码根据点类型成功打印了所有点,但板颜色设置不正确(仍然是默认背景)。

下面是问题:

1)如何正确设置背景?

2) 我觉得我的代码没有正确地一起使用 JPanels/JFrames/Graphics,如果是这样的话,关于我如何改进我的代码结构有什么建议吗?

最佳答案

使用paintComponent()代替paint()

public class Board extends JPanel{
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
...
}
}

有关更多信息,请查看以下帖子:

enter image description here

关于Java setBackground() 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23479355/

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