繁体   English   中英

涂装后组件不显示

[英]Components don't show up after painting

我正在尝试绘制背景,然后在面板上放置按钮。 如果没有绘画方法,则将按钮正确地放置在屏幕上,但是当使用绘画方法时,只有将鼠标悬停在它们上方时,按钮才会显示出来。 我不知道为什么会这样。 谢谢

这是在构造函数中:

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教程中有关绘画机制的更仔细了解的部分,以获取更多信息。

但是,无论如何,您都不应覆盖paint()。 通过覆盖paintComponent()方法来完成自定义绘制。

代码应为:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM