小编jay*_*Son的帖子

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万
查看次数

为什么localStorage ["..."]未定义,但localStorage.getItem("...")为空?

上次我检查时,返回以下两行true:

null == localStorage["foo"];
null == localStorage.getItem("foo");
Run Code Online (Sandbox Code Playgroud)

同样更换时应用nullundefined.所以第一个问题是,为什么有两种方法来解决localStorage?为什么呢

localStorage["foo"]
Run Code Online (Sandbox Code Playgroud)

回来的undefined时候

localStorage.getItem("foo")
Run Code Online (Sandbox Code Playgroud)

回来了null

在开发JS时我需要处理这个问题吗?

javascript null undefined local-storage

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

Javascript - window.getComputedStyle 返回“auto”作为元素顶部和左侧的属性

在我的网页上,我有一些元素(div、子 div、按钮等),它们的位置是相对于它们所在的 div 生成的,并且彼此之间。这导致使用window.getComputedStyle 时topleft属性不是数字值,而只是“auto”,而宽度高度以 px 为单位。

我需要绝对值用于测量目的的问题,所以我想知道是否有办法以某种方式获取它们。我希望window.getComputedStyle会做,但显然它不会。

下面有一个例子,没有任何格式,但同样的问题。

如果有 jQuery 解决方案,我当然也会很感激。

亲切的问候,
杰森

<html>

<head>
  <title>Test</title>
  <script type="text/javascript">
    function test() {
      var style = window.getComputedStyle(document.getElementsByTagName("button")[0]);
      alert(
        "top = " + style.top + //auto
        "\nleft = " + style.left + //auto
        "\nwidth = " + style.width + //63px
        "\nheight = " + style.height //24px
      );
    }
  </script>
</head>

<body>
  <div>
    <button id="buttonTest" onClick="test()">Test it!</button>
  </div>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

html javascript css jquery

5
推荐指数
1
解决办法
4075
查看次数