Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JButton未在JFrame中正确显示_Java_Swing_Jframe_Jbutton - Fatal编程技术网

Java JButton未在JFrame中正确显示

Java JButton未在JFrame中正确显示,java,swing,jframe,jbutton,Java,Swing,Jframe,Jbutton,我正在制作一个JFrame菜单,它有3个按钮,但启动时按钮没有正确显示 这是我的密码: import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class MainMenu { public static void main(String[] args) { JFrame frame = new JFrame("Nakib Group Managme

我正在制作一个JFrame菜单,它有3个按钮,但启动时按钮没有正确显示

这是我的密码:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainMenu {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Nakib Group Managment System");
        frame.setSize(500, 200);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();
        JButton addRequest = new JButton("Add request");
        addRequest.addActionListener(new AddRequest());
        JButton viewRequests = new JButton("View requests");
        viewRequests.addActionListener(new ViewRequests());
        JButton addCab = new JButton("Add a cab");
        addCab.addActionListener(new AddCab());
        panel.add(addRequest);
        panel.add(viewRequests);
        panel.add(addCab);
        frame.add(panel);
    }
}
当我运行此程序时,它将显示以下内容(由于声誉不足,无法发布图像):

但是,当我调整窗口大小时,按钮将显示:


我的操作系统环境是Windows 10,我正在使用Java。

问题是,在添加组件之前,您将框架设置为可见,这会导致组件层次结构无效。发件人:

如果已经显示了容器,则此后必须验证层次结构,以便显示添加的组件

要更正此问题,应在添加
面板后,将行
frame.setVisible(true)
移到末尾。或者,您也可以在最后调用
revalidate
repaint
,强制更新和重新绘制


现在,它只在调整大小后工作,因为这会迫使它重新布局所有内容,并正确更新组件层次结构。

问题是,在将组件添加到框架之前,您将框架设置为可见,这会导致组件层次结构无效。发件人:

如果已经显示了容器,则此后必须验证层次结构,以便显示添加的组件

要更正此问题,应在添加
面板后,将行
frame.setVisible(true)
移到末尾。或者,您也可以在最后调用
revalidate
repaint
,强制更新和重新绘制


现在,它只在调整大小后工作,因为这会迫使它重新布局所有内容,并正确更新组件层次结构。

是的,我刚刚注意到并修复了它是的,我刚刚注意到并修复了它