3

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

2 回答 2

3

我会看一下ActionAPI。

它允许您定义一个“动作”,它的属性独立于 UI。

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

查看如何使用操作了解更多信息。

于 2012-10-11T06:10:02.960 回答
0

是的,只需在 gui 类之外创建另一个实现 ActionListener 的类

public class MyActionListener implements ActionListener{ 

public void actionPerformed(ActionEvent event) { 
 JOptionPane.showMessageDialog(null, ((JTextArea) event.getSource()).getText() );  
}
于 2012-10-11T05:57:48.017 回答