簡體   English   中英

如何動態建立GUI

[英]How to dynamicly build up a gui

目前,我正在構建一個應進行聲音處理的應用程序。 我正在使用swt / jface在java / eclipse中進行此操作。 處理本身需要內部算法的一些選項/屬性。 目前,我有一個.properties文件,其中包含所有選項:

trimLeadingSilence = 20
trimtrailingSilence = 20
修剪點= 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”的配置文件,但是我不想重新發明這樣的東西,這就是為什么我問你們:)

我不清楚你在問什么。

但是,由於您的問題是如何動態構建gui ,所以我有一個建議:

您可以使用Freemarker之類的Java模板引擎庫。 這將幫助您創建可即時運行的GUI。 使用freemarker,您可以擁有一個模板文件,然后相應地替換這些值。

我用它來動態生成HTML文件。 您可以評估是否可以使用它。 API文檔豐富。 因此,您可以經歷一次。

您的意思是說,您要制作一個包含所有指定選項的UI嗎? 它的形式或菜單無關緊要,由您決定。 但是,您可以肯定地在.properties文件中配置名稱和類型。

看,您在AWT / Swing OR Servlet中構建了Menu OR表單,但是您可以從屬性文件中讀取它嗎?

您還可以使用Spring bean XML定義配置相同的內容,它可以提供更多支持,例如您可以在某些Map OR List等中指定所有詳細信息。

謝謝。

我已經很長時間沒有使用Swing了,所以這只是一個基本原理。
配置應該在xml中完成,.properties文件在這里不好,因為它沒有開箱即用地描述對象。
添加按鈕(“應用配置”),附加actionListener,其中1)解析xml配置,2)然后創建表單或更改現有表單,文本區域,顏色等設置。

xml配置示例:

找到-檢查它的x_coordinate,y_coord(或使用layoutManager,取決於邏輯),動作,然后檢查jframe.getLayout()。add(new Button(x_coord,y_coord,動作)。
發現-一樣。

比jframe.setVisible(true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM