所以我有一个创建以下GUI第一次一类是武器的按钮被点击: 如果JOptionPane的被抽我的面板的组件未按
就在身边每一个按钮,我点击应该切换相应地转到不同的面板。然而,目前,我只是在武器面板上工作。为了节省内存,我决定保存在搜索框中输入的内容,如果用户决定再次打开面板,应用程序会再次搜索列表。目前,我只有一个项目叫测试正如你看到的,我的问题是,如果我在搜索框中键入的东西,这是不可用,而且我开关面板,这是我的结果:
预期结果应该是错误消息,但是在搜索框中,按钮和JList仍然可用,JList显示“没有武器列出”。
现在,当我删除的JOptionPane我得到这一半的结果如下:
我想知道为什么会出现错误信息时,不绘制的面板?
PS:我有一个return语句之前输入了一些控制台消息,一个接一个的JOptionPane后,另一个,他们都得到正确打印
这里是我的面板代码:
private static JPanel searchMenu() {
JPanel pnl = new JPanel();
pnl.setOpaque(false);
pnl.setLayout(new BorderLayout());
Object[] search = search();
if(search.length == 0) {
JOptionPane.showMessageDialog(MyFrame.getFrame(),
"No weapons with your search criteria has been found.\n"
+ "What you type in the search box is searched for in the weapon names, classnames and their description.\n",
"No Weapon found", JOptionPane.ERROR_MESSAGE);
search = new Object[] {"No Weapons listed"};
}
System.out.println(search.length);
DefaultListModel list = new DefaultListModel();
for(Object o: search) list.addElement(o);
JList searched = new JList();
searched.setModel(list);
searched.setPreferredSize(new Dimension(250, 700));
searched.setFont(new Font("Tahoma", Font.PLAIN, 15));
pnl.add(searched, BorderLayout.WEST);
pnl.add(weaponDisplay(lastSelec),BorderLayout.CENTER);
JPanel space = new JPanel();
space.setOpaque(false);
pnl.add(space,BorderLayout.SOUTH);
return pnl;
}
为了尽快提供更好的帮助,请发布[MCVE]或[简短,独立,正确的示例](http://www.sscce.org/)。 –