Java 调整大小时GUI组件消失
我正在编写一个程序,当按下一个按钮时,该程序将替换GUI的主要组件。为此,我有多个类来扩展一个组件(JScrollPane),然后可以将该组件放入扩展JFrame的主类中Java 调整大小时GUI组件消失,java,swing,paint,Java,Swing,Paint,我正在编写一个程序,当按下一个按钮时,该程序将替换GUI的主要组件。为此,我有多个类来扩展一个组件(JScrollPane),然后可以将该组件放入扩展JFrame的主类中 JScrollPane menu; public MenuSystem() { menu = new OpeningMenu(this); setSize(500,500); setLocationRelativeTo(null); setTitle("Menu system"); setDefaultC
JScrollPane menu;
public MenuSystem()
{
menu = new OpeningMenu(this);
setSize(500,500);
setLocationRelativeTo(null);
setTitle("Menu system");
setDefaultCloseOperation(EXIT_ON_CLOSE);
loadInfo();
pane = getContentPane();
pane.setLayout(null);
pane.add(menu);
setVisible(true);
}
public void changeMenuTo(JScrollPane x)
{
pane.remove(menu);
menu = x;
pane.add(menu);
pane.repaint();
}
这些代码控制在GUI上显示哪个JScrollPane。我面临两个我认为相关的问题
更改布局已修复该问题。谢谢你的建议。你还没有发布一个有效的小程序,我们实际上可以编译、运行和修改它,因此很难(如果不是不可能)准确地告诉你为什么你的程序不工作,除了用下面的代码说:
pane.setLayout(null)代码>,你在射自己的脚。这个网站上这么多Swing问题的答案都会告诉你,如果不愚蠢的话,使用空布局是危险的,并且会导致难以调试的错误以及难以创建和维护GUI。2)你真的想使用[CardLayout](())。面板。setLayout(null)
是你的第一个问题为什么你的组件要从JScrollPane扩展,对我来说似乎是个奇怪的想法。您也可以考虑查看卡式布局。