我想将一个类设置为 Jpanel 的模型,我已经为 Uni 的一个介绍编程类做了这个,但这是一个非常不优雅的实现。我确定有一个很好的设置方法,但我不知道/忘记了。
我之前使用的方法是将模型类作为参数传递给视图类,然后使用模型来确定它是什么类型的实例,然后根据此数据将特定图标加载到 gui。这是非常低效的,因为它总是必须检查某个位置的对象并重新加载所有内容。
我觉得这应该是相当直截了当的,但还没有找到正确的答案。任何帮助,将不胜感激。
我想将一个类设置为 Jpanel 的模型,我已经为 Uni 的一个介绍编程类做了这个,但这是一个非常不优雅的实现。我确定有一个很好的设置方法,但我不知道/忘记了。
我之前使用的方法是将模型类作为参数传递给视图类,然后使用模型来确定它是什么类型的实例,然后根据此数据将特定图标加载到 gui。这是非常低效的,因为它总是必须检查某个位置的对象并重新加载所有内容。
我觉得这应该是相当直截了当的,但还没有找到正确的答案。任何帮助,将不胜感激。
我想将一个类设置为 JPanel 的模型。
极好的。这正是每个 GUI 程序员应该做的。
我之前使用的方法是将模型类作为参数传递给视图类,然后使用模型确定它是什么类型的实例,然后根据此数据将特定图标加载到 GUI。
你有正确的想法。模型实例需要传递给 GUI 组件,以便它们可以访问模型的一部分。
在您的特定情况下,模型应该包含获取每个图标的方法,并且 GUI 组件将调用适合该组件的获取图标模型方法。
一般来说,如果您的 JPanel 有文本和按钮组件,那么您的模型应该包含这些文本和按钮组件的内容。如果您的 JPanel 有一个具有自己的数据模型的组件,例如 JTree,那么您可以将 DefaultTreeModel 保留在您的模型类中。
如果你愿意,你可以在你的 GUI 中为每个 JPanel 建立一个模型类。通常,您构建您的 GUI 模型,因此它是合乎逻辑的。
这是我的其他答案之一的真实示例:Spirograph GUI
在大多数情况下实际上JPanel
用作“容器”,并且它没有自己的Model
接口,例如JTable
或JList
就像他们说的,JPanel 没有模型。
但是,这里有一些种子代码,您可以使用它来尝试伪造它。
public abstract class GPanelModel {
abstract public void setWhatEver();
abstract public void getWhatEver();
abstract public void doWhatEver();
}
public class GPanel<T extends GPanelModel> extends JPanel {
final T t;
public GPanel(final T model) {
t = model;
}
public T getModel() {
return t;
}
}