ユーザーがトグルボタンを使用して座席を予約できるようにする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);
}
}
これは私がやりたいことを実行しますが、上に投稿した派生クラスで再作成することはできません。自分のコードに何か問題がありますか?