Как динамически создать графический интерфейс - PullRequest
2 голосов
/ 20 мая 2010

В настоящее время я создаю приложение, которое предназначено для некоторой обработки звука. Я делаю это в Java / Eclipse с SWT / Jface. Сама обработка требует некоторых опций / свойств для алгоритма внутри. В настоящее время у меня есть файл .properties, который содержит все параметры, такие как:

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

Я не хочу, чтобы пользователь редактировал эти параметры в текстовом редакторе, таком как notepad ++, но в графическом интерфейсе моего приложения.

Теперь я думаю о том, как это сделать. У меня есть 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));

            }
        });

Это занимает много времени из-за того, что есть много разных опций. Поэтому я подумал о том, как я могу динамически создавать такой графический код или просто динамически создавать эти графические окна при запуске приложения. По крайней мере, мне понадобится файл конфигурации для «создателя графического интерфейса», но я не хочу изобретать такую ​​вещь, поэтому я спрашиваю вас, ребята:)

Ответы [ 3 ]

0 голосов
/ 20 мая 2010

Вы хотите создать пользовательский интерфейс, в котором будут все указанные вами параметры? Неважно, форма это или меню, решать только вам. Но да, вы можете точно настроить имена и типы в .properties файле.

Видите ли, вы строите форму меню ИЛИ в AWT / Swing ИЛИ сервлете, но вы можете прочитать ее из файла свойств, верно?

Вы также можете настроить то же самое, используя определения XML bean-компонента Spring, что может обеспечить дополнительную поддержку, например, вы можете указать все детали в некоторой карте или списке и т. Д.

спасибо.

0 голосов
/ 25 мая 2010

Я не пользовался Swing в течение длительного времени, так что это лишь основной принцип.
Конфигурирование должно быть сделано в xml, файл .properties здесь плохой, потому что он не описывает готовые объекты.
Кнопка «Добавить» («Apply config»), прикрепить actionListener, который 1) анализирует xml config, 2) затем создает форму или изменяет настройки существующей формы, текстовой области, цветов и т. Д.

пример для конфигурации xml:

найдено - проверьте, что это x_coordinate, y_coord (или используйте layoutManager, зависит от логики), action, чем jframe.getLayout (). Add (new Button (x_coord, y_coord, action).
нашел - тоже самое.

than jframe.setVisible (true);

0 голосов
/ 20 мая 2010

Я не мог понять, что вы спрашиваете.

Но, поскольку ваш вопрос был Как динамически создать графический интерфейс , у меня есть предложение:

Вы можете использовать Java Template Engine библиотека типа Freemarker . это поможет вам создать графический интерфейс, который может быть построенным, чтобы работать на лету. С Freemarker вы можете иметь один файл шаблона, а затем заменить значения соответственно.

Я использовал его для генерации HTML-файлов на лету. Вы можете оценить, если вы можете использовать его в противном случае. Документация по API богата. Так что вы могли бы пройти через это один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...