Java对ActionEvent的疑惑
Java doubts about ActionEvent
这是我在这个网站上的第一个问题。
我遇到了这个问题,在这个 class 中,我有两个具有两个不同功能的按钮,一个用于退出,另一个用于将名字和姓氏放入文本字段中。
我无法让第二个 ActionEvent 工作,请帮助我,谢谢。
import javax.swing.*;
import java.awt.event.*;
public class Prueba1 extends JFrame implements ActionListener{
private JLabel nombre, apellidos,respondo;
private JTextField textfield, textfield1;
private JButton boton,botonoff;
public Prueba1() {
setLayout(null);
nombre = new JLabel("Nombre:");
nombre.setBounds(10, 10, 300, 30);
add(nombre);
apellidos = new JLabel("Apellidos");
apellidos.setBounds(10, 40, 300, 30);
add(apellidos);
textfield = new JTextField();
textfield.setBounds(100,10,150,20);
add(textfield);
textfield1 = new JTextField();
textfield1.setBounds(100,40,150,20);
add(textfield1);
boton = new JButton("¿Que saldrá?");
boton.setBounds(10,80,120,30);
boton.addActionListener(this);
add(boton);
botonoff = new JButton("Salir");
botonoff.setBounds(10,120,120,30);
botonoff.addActionListener(this);
add(botonoff);
respondo = new JLabel("UwU");
respondo.setBounds(160,80,300,30);
add(respondo);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == boton) {
String nombreyapellidos, nombre1, apellidos1;
nombre1 = textfield.getText();
apellidos1 = textfield1.getText();
nombreyapellidos = nombre1 + apellidos1;
respondo.setText(nombreyapellidos);
}
}
public void actionPerformed1(ActionEvent e) {
if(e.getSource() == botonoff) {
System.exit(0);
}
}
public static void main(String args[]) {
Prueba1 clase = new Prueba1();
clase.setVisible(true);
clase.setBounds(0, 0, 500, 500);
clase.setResizable(true);
clase.setLocationRelativeTo(null);
}
}
当您向按钮提供 ActionListener
对象时 button.addActionListener(侦听器)
您有多种方法可以完成此操作。
button.addActionListener(this);
只有一种方式。这种方式表示 class 实现了 ActionListener。
实际上它实现了
public void actionPerformed(ActionEvent e)
方法。
你的
public void actionPerformed1(ActionEvent e)
按钮根本无法使用
幸运的是,还有许多其他方法可以描述产生动作事件时应执行的代码。
内部 class,无论是否静态。其他class/object。
一个 lambda 表达式。
您可以找到如何表达 lambda here。
删除 public void actionPerformed1(ActionEvent e)
方法并将该方法的主体添加到 public void actionPerformed(ActionEvent e)
主体的 else 分支中。
public void actionPerformed(ActionEvent e) {
if (e.getSource() == boton) {
String nombreyapellidos, nombre1, apellidos1;
nombre1 = textfield.getText();
apellidos1 = textfield1.getText();
nombreyapellidos = nombre1 + apellidos1;
respondo.setText(nombreyapellidos);
} else if (e.getSource() == botonoff) {
System.exit(0);
}
}
这是我在这个网站上的第一个问题。 我遇到了这个问题,在这个 class 中,我有两个具有两个不同功能的按钮,一个用于退出,另一个用于将名字和姓氏放入文本字段中。 我无法让第二个 ActionEvent 工作,请帮助我,谢谢。
import javax.swing.*;
import java.awt.event.*;
public class Prueba1 extends JFrame implements ActionListener{
private JLabel nombre, apellidos,respondo;
private JTextField textfield, textfield1;
private JButton boton,botonoff;
public Prueba1() {
setLayout(null);
nombre = new JLabel("Nombre:");
nombre.setBounds(10, 10, 300, 30);
add(nombre);
apellidos = new JLabel("Apellidos");
apellidos.setBounds(10, 40, 300, 30);
add(apellidos);
textfield = new JTextField();
textfield.setBounds(100,10,150,20);
add(textfield);
textfield1 = new JTextField();
textfield1.setBounds(100,40,150,20);
add(textfield1);
boton = new JButton("¿Que saldrá?");
boton.setBounds(10,80,120,30);
boton.addActionListener(this);
add(boton);
botonoff = new JButton("Salir");
botonoff.setBounds(10,120,120,30);
botonoff.addActionListener(this);
add(botonoff);
respondo = new JLabel("UwU");
respondo.setBounds(160,80,300,30);
add(respondo);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == boton) {
String nombreyapellidos, nombre1, apellidos1;
nombre1 = textfield.getText();
apellidos1 = textfield1.getText();
nombreyapellidos = nombre1 + apellidos1;
respondo.setText(nombreyapellidos);
}
}
public void actionPerformed1(ActionEvent e) {
if(e.getSource() == botonoff) {
System.exit(0);
}
}
public static void main(String args[]) {
Prueba1 clase = new Prueba1();
clase.setVisible(true);
clase.setBounds(0, 0, 500, 500);
clase.setResizable(true);
clase.setLocationRelativeTo(null);
}
}
当您向按钮提供 ActionListener
对象时 button.addActionListener(侦听器)
您有多种方法可以完成此操作。
button.addActionListener(this);
只有一种方式。这种方式表示 class 实现了 ActionListener。 实际上它实现了
public void actionPerformed(ActionEvent e)
方法。
你的
public void actionPerformed1(ActionEvent e)
按钮根本无法使用
幸运的是,还有许多其他方法可以描述产生动作事件时应执行的代码。
内部 class,无论是否静态。其他class/object。 一个 lambda 表达式。
您可以找到如何表达 lambda here。
删除 public void actionPerformed1(ActionEvent e)
方法并将该方法的主体添加到 public void actionPerformed(ActionEvent e)
主体的 else 分支中。
public void actionPerformed(ActionEvent e) {
if (e.getSource() == boton) {
String nombreyapellidos, nombre1, apellidos1;
nombre1 = textfield.getText();
apellidos1 = textfield1.getText();
nombreyapellidos = nombre1 + apellidos1;
respondo.setText(nombreyapellidos);
} else if (e.getSource() == botonoff) {
System.exit(0);
}
}