如何动态建立一个gui

时间:2010-05-20 11:43:18

标签: java user-interface swt jface

目前正在构建一个应用程序,它应该用于某些声音处理。我在swt / jface的java / eclipse中这样做。 处理本身需要内部算法的一些选项/属性。这时,我有一个.properties文件,其中包含所有选项,如:

  

trimLeadingSilence = 20
  trimtrailingSilence = 20
  trimhold = 5
  fftFrameSize = 512    ...

我不希望用户在像notepad ++这样的短信服务器中编辑这些选项,但是在我的应用程序的gui中。

现在我想到如何做到这一点。我有2个“想法”: 为每个选项集创建一个类,并手动编写所有这些无聊的gui代码行。就像这里只有一个选项; - )

Spinner spinnerSilenceBack = new Spinner(shell, SWT.BORDER);
        spinnerSilenceBack.setMinimum(0);
        spinnerSilenceBack.setMaximum(200);
        selection = Integer.valueOf(PropertyManager.getPropertyValue("trimming", "trailingSilence"));
        spinnerSilenceBack.setSelection(selection);
        spinnerSilenceBack.setIncrement(5);
        spinnerSilenceBack.setPageIncrement(20);
        spinnerSilenceBack.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
                int selection = ((Spinner) e.getSource()).getSelection();
                int digits = ((Spinner) e.getSource()).getDigits();
                int result = (int) (selection / Math.pow(10, digits));

                PropertyManager.setPropertyValue("trimming", "trailingSilence", String
                        .valueOf(result));

            }
        });

这需要花费很多时间,因为有很多不同的选择。所以我想到了如何动态创建这样的gui代码,或者在启动应用程序时动态创建这些gui窗口。至少我需要一个“gui creator”的配置文件,但我不想重新发明这样的事情 - 这就是为什么我问你们:)

3 个答案:

答案 0 :(得分:0)

我无法清楚地知道你在问什么。

但是,既然你的问题是如何动态建立一个gui ,我有一个建议:

  

您可以使用Java模板引擎   像Freemarker这样的图书馆。这个   会帮助你创建可以的GUI   建立在飞行中工作。同   freemarker你可以有一个单一的   模板文件然后替换   相应的价值观。

我已经用它来动态生成HTML文件。您可以评估是否可以使用它。 API文档很丰富。所以你可以经历一次。

答案 1 :(得分:-1)

你的意思是,你想创建一个拥有你指定的所有选项的UI吗?它的形式或菜单无关紧要,取决于您。但是,你可以在.properties文件中配置名称和类型。

请参阅,您在AWT / Swing OR Servlet中构建一个Menu OR表单,但是您可以从属性文件中读取它吗?

您也可以使用Spring bean XML定义进行相同的配置,这可以提供更多支持,就像您可以在某些Map OR List中指定所有细节一样......

感谢。

答案 2 :(得分:-1)

我很长时间没有使用Swing,所以这里只是一个基本原则 配置应该在xml中完成,.properties文件在这里很糟糕,因为它没有描述开箱即用的对象。
添加按钮(“应用配置”),附加actionListener,其中1)解析xml配置,2)然后创建表单或更改现有表单,文本区域,颜色等的设置。

xml config的示例:

找到 - 检查它是x_coordinate,y_coord(或使用layoutManager,取决于逻辑),action,而不是jframe.getLayout()。add(new Button(x_coord,y_coord,action)。
发现 - 相同。

比jframe.setVisible(true);