通常在使用JavaBuilder 1 时,您可以定义一个新组件:
Yaml myFrame.yaml:
JFrame(name=frame, title=frame.title, size=packed, defaultCloseOperation=exitOnClose):
- JPanel(name=panel1, tabTitle=tab.panel1Name):
-JTextArea(name=textArea1)
- JPanel(name=panel2, tabTitle=tab.panel2Name):
-JTextArea(name=textArea2)
- JPanel(name=panel3, tabTitle=tab.panel3Name):
-JTextArea(name=textArea3)
Java myFrame.java:
public class MyFrame extends JFrame {
private BuildResult result = SwingJavaBuilder.build(this);
}
JavaBuilders知道文件名要加载什么。有没有办法让JavaBuilders加载另一组名为panel1
... panel3
的文件,具体取决于组件名称?这将是我的应用程序的一部分可以写出yaml文件然后我可以'热部署'构建我的JFrame时使用private BuildResult result = SwingJavaBuilder.build(this);
)
我的目的是阅读一个目录,查找可能如下所示的文件/文件集:
my.dir.panel1=available
my.dir.panel1.textArea1=available
my.dir.panel1.textArea1.default=Declarative GUIs!
my.dir.panel1.textArea2=unavailable
my.dir.panel2=available
my.dir.panel2.textArea1=available
my.dir.panel3=available
my.dir.panel3.textArea1=available
my.dir.panel4=unavailable
my.dir.panel4.textArea1=unavailable
然后使用它来填充Swing中的组件。我可以使用snakeYaml以编程方式写出Yaml文件,具体取决于可用的'可用'在上面的属性文件但是中,如果我可以避免重写JFrame
部分(可能包含赢得' t 更改的各种其他组件) Yaml文件是理想的。
我能想到的唯一另一种方法是在Java中创建多个结果,如此
public class MyFrame extends JFrame {
private BuildResult frankenResult = SwingJavaBuilder.build(this);
private BuildResult subReult1 = SwingJavaBuilder.build(new MyPanel());
JFrame myFrame = (JFrame)result.get("myFrame");
JPanel myPanel = (JPanel)result.get("panel1");
myFrame.add(myPanel);
}
但是考虑到这一点,我不确定我是否可以拨打这个电话SwingJavaBuilder.build(new MyPanel());
那么如何在单独的yaml文件中创建组件子集,然后在主Yaml文件中引用它们呢?