gpt4 book ai didi

Java GUI 构建技巧?

转载 作者:行者123 更新时间:2023-11-30 06:37:29 25 4
gpt4 key购买 nike

我正在为一些代码构建一个 Java GUI,但我不太确定某些设计方面。

作为一些背景 - GUI 将仅用于一个 Activity 流

  • 用户加载文件,文件出现在屏幕上,每次按下按钮表示是/否回答后,用户都会看到数学变换 1、变换 2 和变换 3 的效果。

我想知道的是 - 对 GUI 代码进行某种程度的硬编码以便在加载文件后,与按钮关联的事件从连接转换 1 变为 2 再到 3 是否可以?

这些转换的功能是在另一个 Java 文件中实现的,我想知道这两者之间的分离/通信将如何工作;或者我是否应该继续使用一个文件来涵盖要使用 GUI 项目执行的数学功能。

请随时提出您认为有助于您回答此问题的任何问题。

最佳答案

Model-View-Controller 做一些研究范例;它可能最适合您要做的事情。

在您当前的设置中,您编写的代码就是模型。它包含您的应用程序的所有“业务逻辑”。你需要写的是前端,View和Controller。 Controller 充当 View 和模型之间的中介;当您单击按钮( View 元素)时,关联的按钮处理程序( Controller )将通过调用某种方法委托(delegate)给模型。例如

public class View extends JPanel implements ActionListener {

JButton transform = new JButton("Transform1");
Model m;
public View(Model m) {
super();
this.m = m;
transform.setActionListener(this);
// lay out the GUI
setLayout(...);
add(// whatever view you need to visualize the data);
add(transform);
}

/**
Make sure all of the GUI elements are correct */
public void update() {
State transformState = m.getTransformState();
transform.setText(transformState.getNextStateDescription());

// Draw the state of the file they loaded in, probably to another JPanel
}

public void actionPerformed(ActionEvent e) {
m.transform();
}

}

在小示例中,将 View 和 Controller 像这样混合在一起可能没问题( View 正在处理本示例中的按钮按下)。

就两者之间的沟通而言,我建议您使模型扩展 Observable

public class Model extends Observable {
public void transform() {

// Do the transformation

// notify the view
setChanged();
notifyObservers();
}
}

并使 View 实现Observer

public class View implements ActionListener, Observer {

public View(Model m) {
// snip
m.addObserver(this);
}

public void update(Observable o, Object arg) {
// Delegate to previously defined method
update();
}

}

关于Java GUI 构建技巧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3454141/

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