gpt4 book ai didi

java - 绘制后组件不显示

转载 作者:行者123 更新时间:2023-12-01 16:58:49 24 4
gpt4 key购买 nike

我正在尝试绘制背景,然后将按钮放在面板上。如果没有paint方法,按钮会正确地放置在屏幕上,但是当存在paint方法时,只有将鼠标悬停在按钮上,按钮才会显示。我不明白为什么会这样。谢谢

这是在构造函数中:

setBorder(new EmptyBorder(40, 40, 40, 40));
setSize(1600, 1000);
setLayout(new GridLayout(4, 0, 40, 40));

for(int r = 0; r < rows; r++){
for(int c = 0; c < cols; c++){
levels[r][c] = new JButton(String.valueOf(levelNum));
levels[r][c].setMargin(new Insets(50, 50, 50, 50));
levels[r][c].addActionListener(e);
levels[r][c].setBackground(Color.MAGENTA);
this.add(levels[r][c]);
levelNum++;
}
}

然后是:

@Override
public void paint(Graphics g){

g.setColor(Color.CYAN);
g.fillRect(0, 0, this.getWidth(), this.getHeight());

... (just some basic fillRect()'s and things)
}

最佳答案

因为您不调用 super.paint(g),所以子组件不会被绘制。

阅读 Swing 教程中关于 A Closer Look at the Painting Mechanism 的部分了解更多信息。

但是无论如何你都不应该重写paint()。自定义绘制是通过重写 paintComponent() 方法来完成的。

代码应该是:

public void paintComponent(Graphics g)
{
super.paintComponent(...);
...

关于java - 绘制后组件不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29450101/

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