3

通常在使用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 文件,具体取决于上述属性文件中的“可用”内容,如果我可以避免重写 Yaml 文件中的JFrame部分(可能包含不会更改的各种其他组件)将是理想的。

我能想到的唯一另一种方法是像这样在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 文件中引用它们呢?

1:GitHub 回购

4

0 回答 0