ArrayIndexOutOfBoundsException в приложении JComboBox
import java.awt.*;
import java.awt.event.*;
import javax.swing.* ;
public class GUI extends JFrame {
private JComboBox box ;
private JLabel picture ;
private static String[] filename={"Phone.png","Music.png"};
private Icon[] pics={new ImageIcon(getClass().getResource(filename[0]))};
public GUI(){
super("JComboBox");
setLayout(new FlowLayout());
box=new JComboBox (filename);
box.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent event){
if(event.getStateChange()==ItemEvent.SELECTED)
picture.setIcon(pics[box.getSelectedIndex()]);
}
}
);
add(box);
picture=new JLabel(pics[0]);
add(picture);
}
}
Когда я пытаюсь проверить music.png
это дает мне эту ошибку
Exception in thread "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBoundsException: 1 at GUI$1.itemStateChanged(GUI.java:20) at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1222) at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1279) at javax.swing.JComboBox.contentsChanged(JComboBox.java:1326) ...
1 ответ
Решение
Начнем с того, что вы указали два имени файла, но загрузили только одно изображение
private static String[] filename = {"Phone.png", "Music.png"};
private Icon[] pics = {new ImageIcon(getClass().getResource(filename[0]))};
Попробуйте загрузить оба изображения...
private Icon[] pics = {
new ImageIcon(getClass().getResource(filename[0])),
new ImageIcon(getClass().getResource(filename[1]))
};