gpt4 book ai didi

java - 控制对 Eclipse Window Builder 创建的 GUI 对象的引用放置位置

转载 作者:搜寻专家 更新时间:2023-10-31 20:29:48 26 4
gpt4 key购买 nike

摘要:我正在寻找一种方法来配置 Eclipse Window Builder 的代码生成器,以将其对象引用放置在类主体中,而不是本地放置在 initalize() 中方法。

详细:

Window builder 有一个内置的代码生成器/代码分析器,它可以从“图形表单设计器”生成 GUI 代码,反之亦然。对于快速设计图形用户界面和了解各种框架在 java 中的工作方式(尤其是对于 java 初学者)有很大用处。但是,在转向更复杂的 GUI 设置时,我在设计中使用生成的代码时遇到了麻烦。问题是大部分生成的代码都放在 initialize() 方法中,这使得对象驻留在本地范围内并且很难从“外部”获取引用。

到目前为止,我一直在将 initialize() 方法中的类型声明复制/粘贴到类主体中手动作为 public 以访问它们,但是这似乎某种程度上是错误的方法。只要我不从图形设计器中重新组织 GUI,它就可以正常工作。在这种情况下,代码生成器将其类型声明再次放在 initialize() 方法中。

自动生成的代码如下所示:

   // AUTO-GENERATED CODE
public class MyGUI {
private void initialize() {
// gui objects declared AND created in this scope by Window Builder
JFrame frame = new JFrame();
JPanel panel_1 = new JPanel();
frame.getContentPane().add(panel_1);
}
}

我想要的是:

   public class MyGUI {
// accessible from outside
public Frame frame = null;
public JPanel panel_1 = null;

private void initialize() {
// gui objects only created in this scope
frame = new JFrame();
panel_1 = new JPanel();
frame.getContentPane().add(panel_1);
}
}

我一直在寻找解决方案的文档(相关文档很少),并且还研究了各种 Window Builder 首选项,但到目前为止没有成功。有“数据绑定(bind)”,但它似乎实现了 MVC(将 gui 元素绑定(bind)到模型)并且相当大材小用。

我是否缺少一种设计模式,或者我是否应该以某种方式将引用“钓鱼”到 initialize() 的本地范围之外?

最佳答案

在首选项窗口中,展开 WindowBuilder 和 Swing(或 SWT),然后展开代码生成。有一些选项可以在本地声明变量,作为类级别的字段,并延迟初始化。您还可以选择平面或 block 语句。那里are some examples in the documentation under WindowBuilder Pro User Guide > Preferences > Swing寻找什么。

关于java - 控制对 Eclipse Window Builder 创建的 GUI 对象的引用放置位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354378/

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