调整大小时GUI组件消失

时间:2018-01-04 00:48:53

标签: java swing paint

我正在编写一个程序,当按下按钮时,该程序会交换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上。我面临两个我认为相关的问题。

  1. 当我启动程序时,初始JScrollPane中的某些组件不会出现。我在此窗格中有几个按钮和一个JLabel,但只显示第一个按钮。当我的鼠标经过它们时,其余按钮会出现,但在此之前,它们是不可见的。这看起来很奇怪,因为它表明我的构造函数有点错。当使用changeMenuTo()方法调出相同的窗格时,它看起来很完美。

  2. 每当我手动调整屏幕大小时,当前窗格中的所有组件都会消失。它几乎与我第一次启动程序时完全相同,按钮是不可见的,直到我的鼠标经过它们。在这种情况下,第一个按钮也是不可见的。

1 个答案:

答案 0 :(得分:0)

更改布局已修复此问题。感谢您的建议。