2012-12-28 26 views
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(""); 
    } 
} 

回答

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()); 
+0

啊哈......非常感谢:) 这很简单 – mako

+0

为什么ü把加在butMove上的动作监听器 – mako

+0

@MisakoKarasuma,因为你是这么做的。看你自己的代码。 –

0

看一看的Action接口。

可以使用Action来将功能和状态从组件中分离出来。

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

class MoveAction extends AbstractAction { 

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

设置:

butMove.setAction(new MoveAction()); 
+0

但setAction这是什么方法? – mako

+0

它为控件设置“操作”,但不仅允许您设置监听器,还可以设置图标和启用/禁用状态。请参阅文档[Action](http://docs.oracle.com/javase/7/docs/api/javax/swing/Action.html) – Reimeus

+0

aha ..i了解了:)谢谢 好吧,我会:) – mako