向JButton添加动作侦听器

时间:2015-09-13 09:21:48

标签: java jbutton actionlistener

我在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();
  }    
}

1 个答案:

答案 0 :(得分:0)

使用anonumousinnerclass或实现ActionListener

添加actionListener
say.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println(input.getText());
               //do your logic 
            }
        });