gpt4 book ai didi

java - 如何在swing和swt中分离程序逻辑表单设计

转载 作者:行者123 更新时间:2023-12-04 05:59:42 24 4
gpt4 key购买 nike

我对 Spring、Hibernate 等 J2EE 框架有相当的了解,并受到关注点分离的启发。我是java桌面开发的初学者。事情在 Swing 中变得有些模糊。在 VB 中,表单设计将作为一个单独的设计,而我们的表单将只包含事件监听器。但是当我开始 Swing 时,很多东西都加载到一个类中,这让事情变得很困难。我无法找到我错在哪里。当我开始寻找 SWT 等替代方案时,类似的事情还在继续。

我从互联网上获得的示例 SWT 代码

import java.awt.Color;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import edu.umd.cs.piccolox.swt.PSWTCanvas;
import edu.umd.cs.piccolox.swt.PSWTPath;
import edu.umd.cs.piccolox.swt.PSWTText;
public final class SWTBasicExample {

/**
* Create and open a new shell on the specified display.
*
* @param display display
* @return a new shell on the specified display
*/
public static Shell open(final Display display) {
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());

// create a new SWT canvas
final PSWTCanvas canvas = new PSWTCanvas(shell, 0);

// create some SWT nodes
// and add them as child nodes to the canvas' camera's first layer
PSWTPath rect = PSWTPath.createRectangle(25, 25, 50, 50);
rect.setPaint(Color.RED);
canvas.getLayer().addChild(rect);

rect = PSWTPath.createRectangle(300, 25, 100, 50);
rect.setPaint(Color.BLUE);
canvas.getLayer().addChild(rect);

PSWTPath circle = PSWTPath.createEllipse(100, 200, 50, 50);
circle.setPaint(Color.GREEN);
canvas.getLayer().addChild(circle);

circle = PSWTPath.createEllipse(400, 400, 75, 150);
circle.setPaint(Color.YELLOW);
canvas.getLayer().addChild(circle);

PSWTText text = new PSWTText("Hello World\nMultiline");
text.translate(350, 150);
text.setPenColor(Color.GRAY);
text.setBackgroundColor(Color.BLACK);
canvas.getLayer().addChild(text);

text = new PSWTText("Goodbye World");
text.translate(50, 400);
text.setPenColor(Color.MAGENTA);
canvas.getLayer().addChild(text);

shell.open();
return shell;
}

public static void main(final String[] args) {
final Display display = new Display();
final Shell shell = open(display);
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}

这里一切都搞砸了,所以我们的业务逻辑和设计都在一个类上。我研究了一个方法最多可以有 10 行,以降低复杂性和可重用性。它是否仅适用于逻辑而不适用于桌面开发。

同时,我听说 Swing 是一个 MVC 框架。所以,我想要逻辑、设计和控制的巧妙分离。我希望在 Swing 和 swt 中遵循良好的工程实践,以简化 Java 中的桌面开发。因为我使用的是 eclipse SWT,所以对我来说更可取。

谢谢,

最佳答案

Spring(和其他提到的技术/框架)绝对有不同于 GUI 框架的另一个目的。您可能不需要两种如此不同的技术提供相同的东西。桌面不是网络,没有我们所说的相同规则。

如果您想在 SWT 中使用类似 MVC 的模式(尤其是用于数据绑定(bind)),请学习 JFace .

关于java - 如何在swing和swt中分离程序逻辑表单设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9076640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com