将AcionListener与GUI分开

时间:2012-10-11 05:52:04

标签: java swing model-view-controller user-interface actionlistener

我是java编程新手,目前已注册2周课程。我想问一下是否可以将acionlistener与gui类分开?在我还在学习的时候,我想应用mvc,但不知道如何开始,我该怎么做。

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;


public class WriteFile extends JFrame implements ActionListener{
    JTextArea textBox;
    JButton convert;

    WriteFile(){
        //windows
        setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
        setVisible(true);
        setSize(300, 300);
        setLocationRelativeTo(null);        
        //others
        textBox = new JTextArea("Type something here", 5, 15);
        convert = new JButton("Display");
        //layout        
        add(textBox, BorderLayout.CENTER);
        add(convert, BorderLayout.LINE_END);        
        //actionlistener
        convert.addActionListener(this);        
    }

    @Override
    public void actionPerformed(ActionEvent event) {
        String output = "";
        output = textBox.getText();
        JOptionPane.showMessageDialog(null, output);

    }
}

这是我的主要内容:

import java.awt.BorderLayout;

public class main {

    public static void main(String[] args) {
        WriteFile wc = new WriteFile();
        wc.pack();
    }
}

2 个答案:

答案 0 :(得分:3)

我会看一下Action API。

它允许您定义一个" Action"和它的属性独立于UI。

它是一个非常强大的概念,因为它允许您以独立的方式集中常用的操作,以允许它们被重用。

有关详细信息,请查看How to use Actions

答案 1 :(得分:0)

是的,只需创建另一个在gui类

之外实现ActionListener的类
public class MyActionListener implements ActionListener{ 

public void actionPerformed(ActionEvent event) { 
 JOptionPane.showMessageDialog(null, ((JTextArea) event.getSource()).getText() );  
}