JButton 没有出现在 JFrame 上

JButton not appearing on JFrame

以下是 jbutton 未显示在框架上的代码。我也将可见设置为 true。即使这样,该按钮也不会出现。

class gui{
        public static void main(String args[]){
            layoutBorder lb=new layoutBorder("check");
        }
    }

class layoutBorder extends JFrame{
    layoutBorder(String title){
        super(title);
        setLayout(null);
        setSize(200, 200);
        JButton jb=new JButton("JB");
        add(jb);
        setVisible(true);
    }
}

不要使用空布局!!!

Swing 旨在与布局管理器一起使用。

阅读 Swing 教程中的部分 o Layout Managers 了解更多信息。

我建议您下载工作示例并使用它们。该示例还将向您展示如何更好地构建代码。也许从 How to Use Buttons 中的代码开始,它有一个简单的示例,将 3 个按钮添加到面板,然后将面板添加到框架。

此外,class 名称应以大写字符开头。你有没有在 API 中看到 class 而不是???学习 Java 惯例并遵守它们。

camickr 是对的。此外,当应用程序线程需要更新 GUI 时,始终使用 AWT 事件调度线程。

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

public class Gui {
    public static void main(String args[]) {
        SwingUtilities.invokeLater(() -> {
            MyFrame frame = new MyFrame("check");
        });
    }
}

class MyFrame extends JFrame {
    MyFrame(String title){
        super(title);
        setLayout(new BorderLayout());
        setSize(200, 200);
        JButton jb = new JButton("JB");
        add(jb);
        setVisible(true);
    }
}

如果你想要 null 布局,那么你需要自己设置尺寸和位置。使用 setLocationsetSize 方法。

class gui{
        public static void main(String args[]){
            layoutBorder lb=new layoutBorder("check");
        }
    }

class layoutBorder extends JFrame{
    layoutBorder(String title){
        super(title);
        setLayout(null);
        setSize(200, 200);
        JButton jb=new JButton("JB");
        jb.setLocation(10, 10);
        jb.setSize(40, 30);
        add(jb);
        setVisible(true);
    }
}