Ursprünglich habe ich eine JFrame
haben 3 Tasten: welche Taste 0 drucken 0 beim Anklicken der Taste 1 prints 1 und so weiter:Warum haben diese 2 ähnlichen for loop unterschiedliche Ergebnisse beim Hinzufügen von ActionListener zu JButton?
JFrame jframe=new JFrame();
jframe.getContentPane().setLayout(new GridLayout(3,1));
for(int i=0;i<3;i++){
final int j=i;
JButton jbutton=new JButton(""+j);
jframe.getContentPane().add(jbutton);
jbutton.setPreferredSize(new Dimension(100,100));
jbutton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println(""+j);
}
});
}
jframe.setVisible(true);
jframe.pack();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Ich mag 1 Zeile reduzieren aufgrund des letzten Variable und damit Umgestalten der for-Schleife wie folgt aus:
JFrame jframe=new JFrame();
jframe.getContentPane().setLayout(new GridLayout(3,1));
for(final int[] arr={0};arr[0]<3;arr[0]++){
JButton jbutton=new JButton(""+arr[0]);
jframe.getContentPane().add(jbutton);
jbutton.setPreferredSize(new Dimension(100,100));
jbutton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println(""+arr[0]);
}
});
}
jframe.setVisible(true);
jframe.pack();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aber dieses Mal sind alle Tasten 3 auch auf die Schaltfläche Index drucken ist noch 0,1,2, was ist der Grund?
warum Sie ein Array 'für (final int [] arr = {0}; arr [0] <3; arr [0] ++) werden mit {'? –
'arr [0] ++' ... was ist der Wert bei 'arr [0]' wenn die Schleife abgeschlossen ist? – MadProgrammer