Java JButton未在JFrame中正确显示
我正在制作一个JFrame菜单,它有3个按钮,但启动时按钮没有正确显示 这是我的密码: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
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
,强制更新和重新绘制
现在,它只在调整大小后工作,因为这会迫使它重新布局所有内容,并正确更新组件层次结构。是的,我刚刚注意到并修复了它是的,我刚刚注意到并修复了它