JavaSwingBuilder创建的组件可以引用其他Yaml文件吗?

时间:2014-01-10 12:51:28

标签: java swing user-interface yaml javabuilders

通常在使用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文件中引用它们呢?

1:GitHub Repo

0 个答案:

没有答案