gpt4 book ai didi

java - 添加新的 jpanel 后出现 IndexOutOfBound 异常

转载 作者:行者123 更新时间:2023-12-02 03:33:47 24 4
gpt4 key购买 nike

我有一个组合框,我可以在其中选择一个人。选择一个人后,我想用一个新的 JPanel 来更改我的 Activity JPanel,该新 JPanel 提供我选择的人的所有信息。但是当我更改 JPanel 时,我收到一个 IndexOutOfBoundsException。我是新手,但我一直认为这个错误只出现在小数组中?我做错了什么?

我的第一个类:

 public void initGUI() {
comboBox1.removeAllItems();

for (Person personi : listPerson) {
comboBox1.addItem(personi);
}
comboBox1.setSelectedIndex(-1);

comboBox1.addItemListener(e -> comboBox1Pressed(e));
frame.setContentPane(mainPanel);
frame.repaint();
frame.revalidate();
frame.setVisible(true);
}

private void comboBox1Pressed(ItemEvent ie) {
if (ie.getStateChange() == ie.SELECTED) {
gui_Person.initGUI((Person) ie.getItem());
}
}

我的第二个:

public void initGUI(Person person) {
frame.setContentPane(mainPanel);
frame.repaint();
frame.revalidate();
frame.setVisible(true);
}

错误出现在这一行的第二个类中:

frame.setContentPane(mainPanel);

堆栈跟踪:

Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.remove(ArrayList.java:492)
at java.awt.Container.remove(Container.java:1217)
at javax.swing.JLayeredPane.remove(JLayeredPane.java:246)
at java.awt.Container.remove(Container.java:1262)
at javax.swing.JRootPane.setContentPane(JRootPane.java:623)
at javax.swing.JFrame.setContentPane(JFrame.java:698)
at GUI_Person.initGUI(GUI_Person.java:45)
at GUI_Person.initGUI(GUI_Person.java:45)
at GUI_Main.comboBox1Pressed(GUI_Main.java:42)
at GUI_Main.lambda$initGUI$0(GUI_Main.java:32)

最佳答案

通过先删除旧面板然后添加新面板解决了问题:

public void initGUI(Person person) {
frame.getContentPane().removeAll();
frame.repaint();
frame.revalidate();

frame.setContentPane(mainPanel);
frame.repaint();
frame.revalidate();
frame.setVisible(true);
}

关于java - 添加新的 jpanel 后出现 IndexOutOfBound 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37701783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com