0

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

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

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

2 回答 2

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());
于 2012-12-28T16:05:07.950 回答
0

看一下动作界面。

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

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

class MoveAction extends AbstractAction {

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

环境:

butMove.setAction(new MoveAction());
于 2012-12-28T16:14:38.860 回答