【问题标题】:Separate AcionListener from GUI将 AcionListener 与 GUI 分离
【发布时间】:2012-10-01 17:34:21
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我会看看Action API。

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

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

    查看How to use Actions 了解更多信息。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 为什么不同时使用源组件作为parentComponent?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      相关资源
      最近更新 更多