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 に答える