JButtonが押されたことをどのように確認できますか?名前が「isEnabled」であるメソッドがあることを知っています
だから私はテストするコードを書いてみます。
ここにコード:
final JButton btnAdd = new JButton("Add");
btnAdd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
panel.add(btnAdd);
JButton btnConfirm = new JButton("Check Out");
btnConfirm.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (btnAdd.isEnabled()) {
System.out.println("Add Button is pressed");
}
if (!btnAdd.isEnabled()) {
System.out.println("Add Button is not pressed");
}
}
});
このコードを実行すると、「追加」ボタンを押さなかったのに、「追加ボタンが押された」だけのコードが表示されます。なぜそれがそのように起こるのですか?
JButton
には model があり、これらの質問に答えます:
isArmed()
、isPressed()
、isRollOVer()
など。したがって、モデルに求めている答えを尋ねることができます。
if(jButton1.getModel().isPressed())
System.out.println("the button is pressed");
使用する必要があるようです JToggleButton
:
JToggleButton tb = new JToggleButton("Push me");
tb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JToggleButton btn = (JToggleButton) e.getSource();
btn.setText(btn.isSelected() ? "pushed" : "Push me");
}
});
JButton#isEnabled
は、コンポーネントのユーザーインタラクティビティ、つまりユーザーがコンポーネントを操作(押す)できるかどうかを変更します。
JButton
が押されると、actionPerformed
イベントが発生します。
追加ボタンが有効になっているため、確認ボタンを押すとAdd button is pressed
が表示されます。述べたように、それはボタンの押されたスタートとは何の関係もありません。
あなたのコードに基づいて、確認ボタンのActionListener
内で追加ボタンの「押された」開始を確認しようとした場合、ボタンは押された状態にあるため、追加ボタンのActionListener
sが呼び出されています。
このすべての情報に基づき、JCheckBox
の使用を検討することをお勧めします。これをJCheckBox#isSelected
を使用して、チェックされているかどうかを判断できます。
詳細については ボタンの使用方法 を詳しく見てください
System.out.println(e.getActionCommand());
関数内でactionPerformed(ActionEvent e)
を実行するだけです。これにより、実行されたコマンドがわかります。
または
if(e.getActionCommand().equals("Add")){
System.out.println("Add button pressed");
}
使用しようとしているメソッドは、ボタンがアクティブかどうかをチェックします。
btnAdd.isEnabled()
有効にすると、このオブジェクトに関連付けられているすべてのコンポーネントがアクティブになり、このオブジェクトのactionPerformedメソッドを起動できます。
このメソッドは、ボタンが押されたかどうかをチェックしません。
質問を正しく理解できたら、ユーザーが[チェックアウト]をクリックした後、[追加]ボタンを無効にする必要があります。
開始時にボタンを無効にしてみてください:btnAdd.setEnabled(false)
またはユーザーが「チェックアウト」を押した後