以下の添付コードを参照し、最後に私の質問を参照してください。
class events extends JFrame{
private JLabel label;
private JButton button;
public events() {
setLayout(new FlowLayout());
button = new JButton("Click for text");
add(button);
label = new JLabel("");
add(label);
event e = new event();
button.addActionListener(e);
}
public class event implements ActionListener {
public void actionPerformed(ActionEvent e) {
int x = 0;
if (x == 0) {
label.setText("the new label");
System.out
.println("setting x to 0 and label to display a label");
x = 1;
System.out.println(x);
} else {
label.setText("newerer label");
System.out.println("i reached the else segment");
x = 0;
System.out.println(x);
}
}
}
public static void main(String args[]) {
events gui = new events();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setTitle("Events Test");
gui.setSize(300, 100);
gui.setVisible(true);
}
}
背景: 私は Java を学んでおり、概念を理解しようとしています。このプログラムでは、ボタンをクリックすると JLabel に「新しいラベル」の文字列値が割り当てられる小さな GUI を作成しようとしました。同じボタンを使用して、2 回目にクリックするとラベルを「新しいラベル」に変更し、3 回目にクリックすると再び元に戻したいと思いました。基本的に 1 または 0 の状態を保持する変数 x を持つ If/Else ステートメントを使用してこれを実行しようとしました。If/Else の各部分の最後で、x の状態を 1 または 0 に適切に変更します。ただし、プログラムをEclipseで実行しようとすると、何らかのエラーが発生しました。system.out を割り当てました。
質問:
- このような単純な 2 つの状態の切り替えを実行するのに、If/Else ステートメントは適切ですか?
- これを行うより適切な方法はありますか?(switch ステートメントについては知っていますが、これは 2 つの状態のプロジェクトに過ぎなかったため、これを選択しました)。
- 私は何を間違えましたか? 状態が 1 であるべきなのに、Else パスが達成されないのはなぜですか?
Pano さん、ご回答ありがとうございます。