【发布时间】:2021-11-12 04:26:27
【问题描述】:
我正在尝试制作我的第一个 tik tak toe 游戏,但是我遇到了一个问题,我解决了一些麻烦。当我尝试按下任何按钮而不是禁用该按钮时,它会说一些沿着 Arrayindex 的行超出索引 9 考虑到 Actionlistener 只能使用 9 次,而变量 i 从 0 开始并在每次循环时加 1,我认为这很奇怪。
线程“AWT-EventQueue-0”java.lang.ArrayIndexOutOfBoundsException 中的异常:索引 9 超出长度 9 的范围
在 Fenster.lambda$0(Fenster.java:38)
import java.awt.Color;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Fenster extends JFrame implements ActionListener{
private JButton knapp1 = new JButton();
private JButton knapp2 = new JButton();
private JButton knapp3 = new JButton();
private JButton knapp4 = new JButton();
private JButton knapp5 = new JButton();
private JButton knapp6 = new JButton();
private JButton knapp7 = new JButton();
private JButton knapp8 = new JButton();
private JButton knapp9 = new JButton();
private JButton knappar[] = {knapp1, knapp2, knapp3, knapp4, knapp5, knapp6, knapp7, knapp8, knapp9};
private int i = 0;
private int h = 10;
private int b = 10;
Fenster(){
while(i <= 8) {
knappar[i].setBounds(b, h, 100, 100);
knappar[i].setLayout(null);
knappar[i].addActionListener(e -> knappar[i].setEnabled(false));
knappar[i].setBackground(Color.green);
this.add(knappar[i]);
if (i%2 == 0) {
}
b = b+110;
if(b > 230) {
b = 10;
h =h+110;
}
i++;
// System.out.println(i);1
}
JPanel brada = new JPanel();
brada.setLayout(null);
brada.setSize(340, 340);
brada.setBackground(Color.black);
this.add(brada);
this.setLayout(null);
this.setVisible(true);
this.setSize(340, 440);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
}
}
【问题讨论】:
-
这和你的 ActionListener 一点关系都没有
标签: java swing jbutton actionlistener indexoutofboundsexception