私の人生では、このプログラムが Java 7 で動作しない理由を理解できません。Java 6 を使用して問題なく実行しましたが、Java 7 で実行するとすぐに動作しません。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class HelloWorld implements ActionListener {
JButton button;
boolean state;
public HelloWorld(){
init();
state = false;
System.out.println("state - "+state);
while (true){
if (state == true){
System.out.println("Success");
}
}
}
private void init(){
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button = new JButton("Button");
button.addActionListener(this);
frame.add(button);
frame.pack();
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
JButton source = (JButton)e.getSource();
if (source == button){
state = !state;
System.out.println("state - "+state);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new HelloWorld();
}
}
Java 6 を使用してボタンを押すと、もう一度ボタンを押すまで「成功」というフレーズが出力されます。Java 7 を使用すると、ボタンが押され、状態の値が true に変更されたことが登録されますが、「成功」というフレーズは出力されません。どうしたの?