摘要:我正在寻找一种方法来配置 Eclipse Window Builder 的代码生成器,以将其对象引用放置在类主体中,而不是本地放置在initalize()
方法中。
详细:
Window builder 有一个内置的代码生成器/代码分析器,它可以从“图形表单设计器”生成 GUI 代码,反之亦然。它对于快速设计 GUI 和了解各种框架如何在 java 中工作(尤其是对于 java 初学者)非常有用。但是,当我转向更复杂的 GUI 设置时,我无法在设计中使用生成的代码。问题是大多数生成的代码都被放置在initialize()
方法中,这使得对象驻留在本地范围内并且难以从“外部”获取引用。
到目前为止,我一直在手动initialize()
将方法中的类型声明复制/粘贴到类主体中,以便可以访问它们,但这似乎是一种错误的方法。只要我不从图形设计器中重新组织 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 偏好,但到目前为止还没有运气。有“数据绑定”,但它似乎实现了 MVC(将 gui 元素绑定到模型)并且相当过分。
是否有我遗漏的设计模式,或者我应该以initialize()
某种方式将引用“钓”出本地范围?