我得到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 2013-04-28 12:30:27
此外,它將始終將文本設置爲「/」。你忘了給你的個案添加'break'。 – 2013-04-28 12:32:30
爲了更快提供更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-04-28 12:55:44