[英]Adding an action listener to JButton
我对Java的新手有点了解,但是在尝试向GUI中的按钮添加活动的侦听器时遇到错误。 这是一个相当简单的GUI,即使有点混乱。 现在,只有标签,按钮和文本区域。 我正在尝试做的是在按钮上单击以使其从文本区域中输入内容,并更改标签以对其进行响应。 这是一个非常简单的主意...但是对于一个新来的人来说,这非常令人讨厌。 我主要是自学成才,每当尝试添加积极的倾听者时,我都会遇到很多问题。
我以为我添加活动监听器的所有尝试都以失败告终,所以我放弃了尝试。 这段代码就是GUI。 除了启动代码之外,什么都没有发生。 我的问题是:如何添加活动的侦听器和响应代码?
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class IgnisTest extends JFrame {
JPanel pnlButton = new JPanel();
JButton say = new JButton("Say");
JLabel output = new JLabel("This is a test");
JTextField input = new JTextField();
public IgnisTest() {
pnlButton.setBackground(Color.black);
say.setPreferredSize( new Dimension( 100, 25) );
input.setPreferredSize( new Dimension(100, 25) );
pnlButton.add(say);
pnlButton.add(input);
JPanel pnlWrapper = new JPanel(new GridBagLayout());
pnlWrapper.setBackground(Color.black);
GridBagConstraints constraints = new GridBagConstraints();
pnlWrapper.add(pnlButton, constraints);
JPanel pnlLeft = new JPanel();
pnlLeft.setBackground(Color.black);
add(pnlWrapper, BorderLayout.SOUTH);
add(pnlLeft, BorderLayout.CENTER);
pnlLeft.add(output);
output.setForeground(Color.white);
setSize(400, 600);
setTitle("Ignis");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new IgnisTest();
}
}
最简单的方法是使用像这样的匿名类。
say.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
output.setText(input.getText());
}
});
您可以在https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html上找到有关匿名类的更多详细信息。
使用anonumousinnerclass或实现ActionListener来添加actionListener
say.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(input.getText());
//do your logic
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.