在 Java 中將 ActionListener 新增到 JButton
-
使用匿名類將
ActionListener
新增到JButton
-
使用匿名類和 Lambda 將
ActionListener
新增到JButton
-
使用繼承將
ActionListener
新增到JButton
今天我們將討論 java.awt.event
的 ActionListener
介面以及如何將它新增到 JButton
,它是 Java Swing 包中 JFrame
類的一個元件。
使用匿名類將 ActionListener
新增到 JButton
在第一個示例中,我們使用方法 main()
建立了一個類 JavaExample
,並在該方法中建立了一個 JFrame
物件。在 JFrame
視窗中,我們建立三個元件:一個 JLabel
來顯示訊息,一個 JTextField
來接受輸入,以及一個 JButton
,我們將新增 ActionListener
。
為了新增監聽器,我們呼叫 JButton
類的 addActionListener()
函式,在這個方法中,我們建立一個匿名類並覆蓋 ActionListener
介面的一部分 actionPerformed()
函式. actionPerformed()
是一種在執行操作時呼叫的方法。
在 actionPerformed()
方法中,我們首先檢查 JTextField
中是否有任何內容,如果 Text Field 為空,則使用 JLabel
顯示一條訊息。否則,我們將顯示我們在文字欄位中寫入的訊息。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class JavaExample {
public static void main(String[] args) {
JFrame jFrame = new JFrame("Java Example");
JLabel jLabel = new JLabel();
jLabel.setBounds(50, 150, 350, 40);
final JTextField jTextField = new JTextField();
jTextField.setBounds(50, 50, 150, 20);
JButton jButton = new JButton("Submit");
jButton.setBounds(50, 100, 100, 30);
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (!jTextField.getText().equals(""))
jLabel.setText(jTextField.getText());
else
jLabel.setText("Please write something in the edit box");
}
});
jFrame.add(jLabel);
jFrame.add(jButton);
jFrame.add(jTextField);
jFrame.setSize(400, 400);
jFrame.setLayout(null);
jFrame.setVisible(true);
}
}
輸出:
使用匿名類和 Lambda 將 ActionListener
新增到 JButton
在 Java 8 中,新增了我們將在本示例中使用的 Lambda 表示式。一切都與前面的示例相同,但在程式中,我們建立了一個方法 buttonPressed()
,並在該函式中,我們將文字欄位中寫入的訊息列印到 JLabel
。
要將 ActionListener
新增到 JButton
,我們使用 addActionListener()
函式,在該方法中,我們使用 lambda 方法。我們使用作為 ActionEvent
物件的引數 e
,然後呼叫 buttonPressed()
方法。
import javax.swing.*;
public class JavaExample {
static JTextField jTextField;
static JLabel jLabel;
public static void main(String[] args) {
JFrame jFrame = new JFrame("Java Example");
jLabel = new JLabel();
jLabel.setBounds(50, 150, 350, 40);
jTextField = new JTextField();
jTextField.setBounds(50, 50, 150, 20);
JButton jButton = new JButton("Submit");
jButton.setBounds(50, 100, 100, 30);
jButton.addActionListener(e -> buttonPressed());
jFrame.add(jLabel);
jFrame.add(jButton);
jFrame.add(jTextField);
jFrame.setSize(400, 400);
jFrame.setLayout(null);
jFrame.setVisible(true);
}
static void buttonPressed() {
if (!jTextField.getText().equals("")) {
jLabel.setText(jTextField.getText());
} else {
jLabel.setText("Please write something in the edit box");
}
}
}
輸出:
使用繼承將 ActionListener
新增到 JButton
在這個程式中,我們使用繼承的概念新增了 ActionListener
。
我們建立一個類 JavaExample
,然後擴充套件類 JFrame
並實現 ActionListener
介面。我們必須重寫作為 ActionListener
介面一部分的 actionPerformed()
方法。
我們在 main()
方法之外宣告 JFrame
元件變數,因為我們需要在函式外使用它。我們建立 JavaExample
類的建構函式並在其中設定所有元件。
要將 ActionListener
新增到 JButton
元件,我們呼叫 addActionListener()
方法並傳遞 this
,它指向當前類的上下文,因為當前類 JavaExample
實現 ActionListener
它是傳遞函式的有效上下文。
在 actionPerformed()
函式中,我們編寫了按下按鈕時要執行的操作。在 main()
方法中,我們建立 JFrame
的例項並設定其佈局和可見性。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class JavaExample extends JFrame implements ActionListener {
static JTextField jTextField;
static JLabel jLabel;
static JButton jButton;
public static void main(String[] args) {
JFrame jFrame = new JavaExample();
jFrame.setLayout(null);
jFrame.setVisible(true);
}
public JavaExample() {
jLabel = new JLabel();
jLabel.setBounds(50, 150, 350, 40);
jTextField = new JTextField();
jTextField.setBounds(50, 50, 150, 20);
jButton = new JButton("Submit");
jButton.setBounds(50, 100, 100, 30);
jButton.addActionListener(this);
add(jLabel);
add(jButton);
add(jTextField);
setSize(400, 400);
}
@Override
public void actionPerformed(ActionEvent e) {
if (!jTextField.getText().equals("")) {
jLabel.setText(jTextField.getText());
} else {
jLabel.setText("Please write something in the edit box");
}
}
}
輸出:
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn相關文章 - Java Swing
- Java 清除文字欄位
- 使用 Java Swing 建立畫布
- Java Swing 日期
- 在 Java Swing 中更改 JLabel 文字
- 在 Swing 中將 JLabel 居中
- 在 Java 中使用 setFont