java JButton 改变按钮文字
for(inti=0;i<B.length;i++){for(intj=0;j<B[i].length;j++){B[i][j]=newJButton();B[i][j]...
for(int i = 0; i < B.length; i++){
for(int j = 0; j < B[i].length; j++){
B[i][j] = new JButton();
B[i][j].setBounds(200 * i , 200 * j + 60 , 200 , 200);
B[i][j].setFont(new Font("", Font.BOLD, 150));
B[i][j].addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent changeButton){
B[0][0].setText("O");
gameState[0][0] = 'O';
}
});
}
}
有字数限制,所以描述一下:
B 的定义: JButton[][] B = new JButton[3][3];
gameState是一个3x3的char数组。
我想给这9个按钮增加点击的动作,就是点击一个按钮就使按钮上面的文字变为 O,但ActionEvent那里不让我写B[i][j].setText("O");,所以只能手动一个一个加动作吗? 展开
for(int j = 0; j < B[i].length; j++){
B[i][j] = new JButton();
B[i][j].setBounds(200 * i , 200 * j + 60 , 200 , 200);
B[i][j].setFont(new Font("", Font.BOLD, 150));
B[i][j].addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent changeButton){
B[0][0].setText("O");
gameState[0][0] = 'O';
}
});
}
}
有字数限制,所以描述一下:
B 的定义: JButton[][] B = new JButton[3][3];
gameState是一个3x3的char数组。
我想给这9个按钮增加点击的动作,就是点击一个按钮就使按钮上面的文字变为 O,但ActionEvent那里不让我写B[i][j].setText("O");,所以只能手动一个一个加动作吗? 展开
1个回答
展开全部
因为 i 和 j 是局部变量,在内部类中不允许访问局部变量,如果要访问必须添加 final。所以有个折中的办法,再声明两个中间变量,并定义为 final 类型的,你在内部类中访问这两个中间变量就行了。代码样例:
for(int i = 0; i < B.length; i++){
for(int j = 0; j < B[i].length; j++){
B[i][j] = new JButton();
B[i][j].setBounds(200 * i , 200 * j + 60 , 200 , 200);
B[i][j].setFont(new Font("", Font.BOLD, 150));
final a = i; // 中间变量
final b = j; // 中间变量
B[a][b].addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent changeButton){
B[a][b].setText("O");
gameState[a][b] = 'O';
}
});
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询