如何制作新的动作监听器

时间:2012-12-28 15:58:37

标签: java swing user-interface netbeans jbutton

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

我不知道如何真正做到请求帮助:(

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

2 个答案:

答案 0 :(得分:1)

您可以在

>

中创建私人内部课程
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());

答案 1 :(得分:0)

查看Action界面。

  

可以使用Action将功能和状态与组件分开。

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

class MoveAction extends AbstractAction {

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

环境:

butMove.setAction(new MoveAction());