相关疑难解决方法(0)

Java和GUI - ActionListeners根据MVC模式属于哪里?

我正在编写一个模板Java应用程序,不知何故,如果我想干净地遵循MVC模式,我不确定ActionListeners所属的位置.

示例是基于Swing的,但它不是关于框架,而是关于Java中MVC的基本概念,使用任何框架来创建GUI.

我开始使用一个包含JFrame和JButton的绝对简单的应用程序(用于处理框架因此关闭应用程序).该帖子的代码落后.没有什么特别的,只是为了澄清我们在说什么.我没有从模型开始,因为这个问题太烦人了.

已经存在多个类似的问题,例如:
带有许多ActionListeners Java的MVC模式
- ActionListener应该去哪里?

但是,他们之间的确非常令人满意,因为我想知道两件事:

  • 将所有ActionListener放在一个单独的包中是否合理?
    • 我想这样做是为了View和Controller的可读性,尤其是 如果有很多听众
  • 如果侦听器不是Controller内的子类,如何从ActionListener中执行Controller函数?(后续问题)

我希望这不是太笼统或模糊,我在这里问,但这让我想了一会儿.我总是使用自己的方式,让ActionHandler了解Controller,但这似乎不对,所以我最终想知道这是如何正确完成的.

亲切的问候,
jaySon


控制器:

package controller;

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

import view.MainView;

public class MainController
{
    MainView mainView = new MainView();

    public MainController()
    {
        this.initViewActionListeners();
    }

    private void initViewActionListeners()
    {
        mainView.initButtons(new CloseListener());
    }

    public class CloseListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            mainView.dispose();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


视图:

package view;

import java.awt.Dimension;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class …
Run Code Online (Sandbox Code Playgroud)

java model-view-controller user-interface swing awt

19
推荐指数
1
解决办法
2万
查看次数

Java Swing中的控制器是什么?

我想以有意义的方式使用Swing将MVC设计应用于我的Java应用程序.因此我的问题是,如何在Java Swing中构建控制器?

我有两个选择:

  1. 每个组件侦听器都是一个自己的类,作为控制器包的一部分
  2. 每个组件侦听器都是视图包中的一个匿名类,它使用控制器方法将其调用委托给一个类.

这两种可能吗?这是一个偏好问题,还是明确界定?

java model-view-controller swing

12
推荐指数
2
解决办法
2万
查看次数

MVC如何使用java swing GUI

假设我有一个带有textfeild和按钮的swing GUI.当我单击按钮时,我想将该值保存在db中的文本中并返回joptionpane"success"消息.
我以前的方式是
模型:JDBC类
视图:GUI:在该按钮的" 动作执行 "操作中,我使用参数调用save方法.

   Controller con = new Controller();
   con.save(text1.getText());
Run Code Online (Sandbox Code Playgroud)

控制器:编写保存方法.

   JDBC db = new                             
   public void save(jTextfeild text){     
   text= text1.getText();
   boolean b= db.putData("insert into .. values(text)");
   if(b){
   JOptionPane("Success"); 
   }
 }
Run Code Online (Sandbox Code Playgroud)


这就是我的开始.但后来我明白这不应该是这样的,这是完全不安全和愚蠢的.
我真的想学习如何在MVC中正确地做到这一点.请用一个小例子来解释这个问题.感谢您的时间.

java model-view-controller user-interface swing

0
推荐指数
1
解决办法
1758
查看次数

标签 统计

java ×3

model-view-controller ×3

swing ×3

user-interface ×2

awt ×1