0

ユーザーがトグルボタンを使用して座席を予約できるようにするGUIをJavaスイングで作成しようとしています。クリックイベントが機能するかどうかをテストするために、最初はデフォルトのボタンの色があります。ボタンは、予約済みであることを示す赤に変わり、未予約であることを示す黄色に変わります。

これが私のactionPerformedメソッドです

@Override
public void actionPerformed(ActionEvent e) {
    GoldSeat seat = (GoldSeat)e.getSource();
    if(seat.isSelected()){
        seat.setBackground(Color.red);
    }
    else
    {
        seat.setBackground(Color.yellow);
    }
}

GoldSeat は、単に JToggleButton の派生クラスです。何らかの理由で、ボタンをクリックしても赤にならず (デフォルトの灰色に変わります)、もう一度クリックすると黄色に変わります。したがって、ボタンの「true」または「on」状態は機能していないように見えますが、「false」は機能しています。isSelected() が正しく機能しない理由がわかりません。

これを解決する方法はありますか?

編集: このコードを生成する Netbeans の単純なドラッグ アンド ドロップ インターフェイスを使用して、JToggleButton が 1 つある簡単な JFrame をまとめました。

jToggleButton1 = new javax.swing.JToggleButton();
 jToggleButton1.setText("jToggleButton1");
    jToggleButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jToggleButton1ActionPerformed(evt);
        }
    });

そしてアクションイベント:

private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                               
    if(jToggleButton1.isSelected()){
        jToggleButton1.setBackground(Color.red);
    }else {
        jToggleButton1.setBackground(Color.yellow);
    }
}   

これは私がやりたいことを実行しますが、上に投稿した派生クラスで再作成することはできません。自分のコードに何か問題がありますか?

4

1 に答える 1