JButton没有出现在JFrame上

时间:2018-04-27 14:57:40

标签: java swing user-interface jframe jbutton

以下是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);
    }
}

3 个答案:

答案 0 :(得分:0)

不要使用空布局!!!

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

阅读Swing教程o Layout Managers中的部分以获取更多信息。

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

此外,类名应以大写字母开头。你有没见过API中的一个类没有?学习Java约定并遵循它们。

答案 1 :(得分:0)

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);
    }
}

答案 2 :(得分:-1)

如果您需要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);
    }
}