我有4個按鈕排列在我的程序列中。截至目前,我有4個循環,檢查是否有按鈕被點擊或沒有。有沒有簡單的方法來檢查是否有任何按鈕被點擊,而不是循環遍歷每個列表,看看是否點擊了某個按鈕。必須有一個更簡單的方法來檢查「actionSource == anybutton」...Java動作監聽器
5
A
回答
20
使用匿名內部類爲每個按鈕:
JButton button = new JButton("Do Something");
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("Do Something Clicked");
}
});
或者,如果你的邏輯是相關的,那麼你就可以共享一個監聽器:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ButtonCalculator extends JFrame implements ActionListener
{
private JButton[] buttons;
private JTextField display;
public ButtonCalculator()
{
display = new JTextField();
display.setEditable(false);
display.setHorizontalAlignment(JTextField.RIGHT);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(0, 5));
buttons = new JButton[10];
for (int i = 0; i < buttons.length; i++)
{
String text = String.valueOf(i);
JButton button = new JButton(text);
button.addActionListener(this);
button.setMnemonic(text.charAt(0));
buttons[i] = button;
buttonPanel.add(button);
}
getContentPane().add(display, BorderLayout.NORTH);
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
setResizable(false);
}
public void actionPerformed(ActionEvent e)
{
JButton source = (JButton)e.getSource();
display.replaceSelection(source.getActionCommand());
}
public static void main(String[] args)
{
UIManager.put("Button.margin", new Insets(10, 10, 10, 10));
ButtonCalculator frame = new ButtonCalculator();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
1
您可以爲每個按鈕添加一個單獨的偵聽器,併爲每個按鈕添加一個公共偵聽器。編程公共監聽器以響應「按下任何按鈕」。
0
任何時候你點擊一個按鈕,它觸發actionPerformed
方法,無論您按下哪個按鈕。
public void actionPerformed(ActionEvent event) {
Object source = event.getSource();
if (source instanceof JButton) System.out.println("You clicked a button!");
}
+0
我還有其他的對象,如組合框和菜單項。我只需要按鈕來完成某個任務,而不是所有的項目都帶有一個監聽器。 – mbreen
+0
@mbreen查看更新的答案。 – fireshadow52
相關問題
- 1. Java定時器動作監聽器
- 2. 動作監聽器
- 3. Java中的動作監聽器
- 4. Java動作監聽器嵌套循環
- 5. 陣列和動作監聽器java
- 6. JLabel在Java中的動作監聽器
- 7. Java動作監聽器和JButtons
- 8. Java動作監聽器問題
- 9. Java中的動作監聽器等待
- 10. 動作監聽器和內部類java
- 11. JButton動作監聽器
- 12. 動作監聽器錯誤
- 13. 添加動作監聽器
- 14. 全局動作監聽器
- 15. 動作監聽器故障
- 16. 在一個類中的窗口監聽器和動作監聽器JAVA
- 17. Java JList監聽器
- 18. Java - CheckBox監聽器
- 19. 監聽器onMessage JAVA
- 20. Swing:動作監聽器的作用
- 21. 動作監聽器不工作
- 22. java中的監聽器如何工作
- 23. 動態運行時Java監聽器
- 24. Java MySQL事件監聽器
- 25. MVC和Java GUI監聽器
- 26. Java中Redis的監聽器
- 27. Java事件監聽器
- 28. Java - Swing中的監聽器
- 29. Method.invoke上的監聽器java
- 30. Java排序表監聽器
Camickr是我眼中的搖擺權威。 – duffymo
分享聽衆......很好,謝謝你的建議!這工作完美! – mbreen