繁体   English   中英

将动作侦听器添加到JButton

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM