我正在编写一个程序,当按下按钮时,该程序会交换GUI的主要组件。为此,我有多个类扩展了一个组件(JScrollPane),然后可以将其放入我的主类中,该类扩展了JFrame。
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();
}
这些代码控制着哪些JScrollPane显示在GUI上。我面临两个我认为相关的问题。
当我启动程序时,初始JScrollPane中的某些组件不会出现。我在此窗格中有几个按钮和一个JLabel,但只显示第一个按钮。当我的鼠标经过它们时,其余按钮会出现,但在此之前,它们是不可见的。这看起来很奇怪,因为它表明我的构造函数有点错。当使用changeMenuTo()方法调出相同的窗格时,它看起来很完美。
每当我手动调整屏幕大小时,当前窗格中的所有组件都会消失。它几乎与我第一次启动程序时完全相同,按钮是不可见的,直到我的鼠标经过它们。在这种情况下,第一个按钮也是不可见的。
答案 0 :(得分:0)
更改布局已修复此问题。感谢您的建议。