关于上个求助的问题代码简化呈现

在我添加3个按钮那里,程序出现了问题

三个按钮都能正常使用,第一个按钮正常显示,而第二个第三个需要鼠标悬停才能显示

import javax.swing.*;
import java.awt.*;

public class Test extends JFrame {
    public static void main(String[] args) {
        Test test = new Test();

        // 创建按钮并添加控件,设置按钮2不可用
        JButton button1 = new JButton("测试按钮1");
        button1.setBounds(200, 200, 100, 40);
        test.add(button1);

        JButton button2 = new JButton("测试按钮2");
        button2.setBounds(350, 200, 100, 40);
        test.add(button2);

        JButton button3 = new JButton("测试按钮3");
        button3.setBounds(500, 200, 100, 40);
        test.add(button3);

        // 最后设置可见以确保控件可用
        test.setVisible(true);
    }

    public Test() {
        // 位置及大小
        this.setBounds(400, 100, 800, 600);
        // 全局采用绝对位置,不使用layout
        this.setLayout(null);
        // 退出时结束进程
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        // 不可以改变大小
        this.setResizable(false);
    }

    @Override
    public void paint(Graphics g) {
        // 刷背景
        g.setColor(new Color(70, 70, 70));
        g.fillRect(0, 0, this.getWidth(), this.getHeight());
    }
}
java
124 views
Comments
登录后评论
Sign In
·

这看一眼代码就知道了好像,你重写paint,需要调用父类的paint,不然就会出问题,网上都是这么讲的,就是加上super.paint(g);

至于为什么三个按钮表现不一致我就不知道了,我压根就没跑,我也不知道,一般来说有bug你可以用个什么在线网站把复现这个bug的最小可运行代码给上传上去,什么依赖啊都搞定掉,推荐的是Github,我一clone直接就能跑了

·

我知道为什么只有第一个会显示出来了,因为焦点在第一个按钮上

但具体为什么不显示,你自己去探究父类paint到底干了什么,我并不是太关心,并且super.paint(g);位置也会有影响