Как прослушать две отдельные кнопки в Java AWT?

#java #button #awt #actionlistener

#java #кнопка #awt #actionlistener

Вопрос:

 import java.awt.*;  
import java.awt.event.*;  
//1st step  
public class ActionListenerExample implements ActionListener{  
public static void main(String[] args) {  
    Frame f=new Frame("ActionListener Example");  
    final TextField tf=new TextField();  
    tf.setBounds(50,50, 150,20);  
    Button b=new Button("Click Here");  
    b.setBounds(50,100,60,30);  
    //2nd step  
    b.addActionListener(this);  
    f.add(b);f.add(tf);  
    f.setSize(400,400);  
    f.setLayout(null);  
    f.setVisible(true);   
}  
//3rd step  
public void actionPerformed(ActionEvent e){  
            tf.setText("Welcome to Javatpoint.");  
}  
}  
 

В приведенном выше я хочу добавить еще одну кнопку и добавить ActionListener и определить actionPerformed метод, но этот метод должен печатать только hello в терминале.

Что я буду делать для этого?

Ответ №1:

Может быть, это может быть полезно.
В основном необходимо добавить отдельных прослушивателей для каждой кнопки. (можно использовать и тот же прослушиватель, но затем необходимо отфильтровать, откуда приходит событие, чтобы выполнять разные действия для каждой кнопки)
Также он обновляется для события закрытия. Но лучше попробуйте посмотреть JFrame(Swing) , так Frame как он довольно древний. В любом случае основные принципы те же.

 import java.awt.Button;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ALTest {

    public static void main(String[] args) {

        Frame f = new Frame("ActionListener Example");
        final TextField tf = new TextField();
        tf.setBounds(50, 50, 150, 20);
        Button b = new Button("Button_1");
        b.setBounds(50, 100, 60, 30);
        Button b2 = new Button("Button_2");
        b2.setBounds(150, 100, 60, 30);

        f.add(b);
        f.add(b2);

        ActionListener al_1 = new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                tf.setText("B1 : "   e.getActionCommand());

            }
        };

        ActionListener al_2 = new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                tf.setText("B2 : "   e.getActionCommand());

            }
        };
        b.addActionListener(al_1);
        b2.addActionListener(al_2);
        f.add(tf);
        f.setSize(400, 400);
        f.setLayout(null);
        f.setVisible(true);
        // close frame
        f.addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent e) {
                System.exit(0);
            }
        });
    }

}
 

Вывод:

введите описание изображения здесь

Для вывода на консоль просто обновите al_2 с System.out... помощью вместо tf TextField