繁体   English   中英

如何制作一个新的动作监听器

[英]how to make a new action listener

此代码通过在移动按钮中添加动作侦听器将文本从文本字段移动到标签,现在我要删除实现动作侦听器并在新类中生成我自己的动作侦听器,并且仍然使按钮移动文本

我不怎么真正做到这一点,请帮助:(

public final class Move extends JFrame implements ActionListener {
    private GridLayout gl;
    private JPanel jp;
    private FlowLayout fl;
    private JButton butMove;
    private JTextField txtFirst;
    private JTextField txtSecond;

    public void buildGUI() {
        this.setTitle("This is my moving JFrame");
        gl = new GridLayout();
        gl.setRows(2);
        gl.setColumns(1);
        this.setLayout(gl);
        jp = new JPanel();
        fl=new FlowLayout();
        jp.setLayout(fl);

        butMove = new JButton("Move");
        txtFirst = new JTextField("please enter a string",10);
        jp.add(butMove);
        jp.add(txtFirst);
        this.add(jp);

        txtSecond = new JTextField();
        this.add(txtSecond); 
        txtSecond.setEditable(false);
        //txtSecond.setBorder(new BorderFactory());
        // Border border = BorderFactory.createLineBorder();
        butMove.addActionListener(this);
        pack();
    }

    public GUI() {
        buildGUI();
    }

    public void actionPerformed(ActionEvent e) {
        String str = txtFirst.getText();
        txtSecond.setText("");
        txtSecond.setText(str);
        txtFirst.setText("");
    }
}

您可以班级内部创建私有内部班级

private class MyActionListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        String str = txtFirst.getText();
        txtSecond.setText("");
        txtSecond.setText(str);
        txtFirst.setText("");
    }
}

因此,此更改为:

butMove.addActionListener(new MyActionListener());

看一下Action界面。

动作可用于将功能和状态与组件分离。

在这里,您可以拥有一个内部类:

class MoveAction extends AbstractAction {

   @Override
   public void actionPerformed(ActionEvent e) {
      txtSecond.setText(txtFirst.getText());
      txtFirst.setText("");
   }
}

设置:

butMove.setAction(new MoveAction());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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