【发布时间】:2016-04-14 23:40:17
【问题描述】:
按钮事件有问题。当我按下任何btn_ij 时,我想更改我的数组 (dizi[i][j])。按钮适用于更改背景颜色,但不适用于更改数组(例如 dizi[i][j]=2;)。我该如何解决这个问题?
package renksudokusu;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Sudoku extends JFrame {
public int[][] dizi =
{{1,2,1,1},
{1,1,1,1},
{1,1,1,1},
{1,1,1,1}};
public int i,j;
public Sudoku(){
this.setTitle("asdf");
this.setSize(600,430);
this.setVisible(true);
this.setLayout(null);
this.setResizable(false);
for(i=0;i<4;i++){
for(j=0;j<4;j++){
JButton btn_ij=new JButton();
btn_ij.setBackground(Color.RED);
this.add(btn_ij);
btn_ij.setBounds(i*100,j*100,100,100);
btn_ij.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0){
if(btn_ij.getBackground()==Color.RED){
btn_ij.setBackground(Color.BLUE);
dizi[i][j]=2;
}
else if(btn_ij.getBackground()==Color.BLUE){
btn_ij.setBackground(Color.GREEN);
dizi[i][j]=3;
}
else if(btn_ij.getBackground()==Color.GREEN){
btn_ij.setBackground(Color.YELLOW);
dizi[i][j]=5;
}
else if(btn_ij.getBackground()==Color.YELLOW){
btn_ij.setBackground(Color.RED);
dizi[i][j]=1;
}
}
});
}
}// For döngülerinin bitişi.
JButton basla=new JButton("Başla");
this.add(basla);
basla.setBounds(450,10,100,50);
JButton kontrol=new JButton("Kontrol Et");
this.add(kontrol);
kontrol.setBounds(450,80,100,50);
kontrol.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0){
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
}
}
}
});
JButton cikis=new JButton("Çıkış");
this.add(cikis);
cikis.setBounds(450,150,100,50);
cikis.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0){
System.exit(0);
}
});
}
public static void main(String[] args) {
new Sudoku();
}
}
【问题讨论】:
-
“我想改变我的数组”和你的标题有什么关系?
-
因为我正在制作java接口程序,我在使用ActionListener时遇到了问题。
-
“接口编程”没有描述您面临的问题。当您询问做某事所需的鸡蛋数量时,这就像在说“烹饪”。请编辑您的标题并使其更具描述性,以便遇到相同问题的人能够识别/找到您的帖子。
-
您没有设置默认关闭操作,因此当您在数独程序中按 x 时,它会在没有 GUI 的情况下继续运行。要使其关闭,请执行以下操作: setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);在数独构造函数中。
-
请注意:您的缩进高度不一致。请为我们和您自己解决这个问题。到处都是缩进的代码很难阅读,而且很容易相信代码属于不同的块而不是它实际属于的块。
标签: java arrays events button interface