Я получаю java.lang.StackOverflowError
когда я запускаю этот код:Добавление ActionListener в течение цикла бросает StackOverflowError
Map<JButton, Integer> buttons = new HashMap<JButton, Integer>();
JPanel main = new JPanel(new GridLayout(4, 4, 4, 4));
for(int i = 0; i < 16; i++) {
JButton jb = new JButton(i+"");
jb.addActionListener(new MyActionListener());
switch(i) {
case 0:
jb.setText("1");
case 1:
jb.setText("2");
case 2:
jb.setText("3");
(...)
case 15:
jb.setText("/");
}
buttons.put(jb, i);
main.add(jb);
}
this.getContentPane().add(main);
Почему происходит эта ошибка? И как я могу это исправить? Благодарю.
Возможно, вы получаете бесконечный цикл при добавлении прослушивателя действий, уверены ли вы, что ваш код «MyActionListener» прав? можете ли вы опубликовать полную статистику стека, а также полный код? – BackSlash
Также он всегда будет устанавливать текст в «/». Вы забыли добавить «break» в ваши дела. –
Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –