2013-11-23 103 views
0

我有一個小型的MVC應用程序,我正在處理模型提供表示組件的數據。在這種情況下,控制器使用JButton來填充視圖,JButton的文本是從模型(字符串列表)中繪製的。添加組件到一個netbeans自動生成的java gui類

不幸的是,我已經接觸到Netbeans的Gui Builder,所以控制器填充的表單是自動生成的。不幸的是,檢查自動生成的表單代碼告訴我,我在運行時修改它很麻煩。

在這一點上,我沒有發現太多解決這個問題。當然,我可以完全用代碼構建表單,但我不想。如果這是唯一真正的可能性,我可以弄清楚如何掛鉤到自動生成的表單的佈局管理器中(儘管一個很好的例子就是如何去做這件事很好)。

所以,我想我的問題是,有沒有一種合理的方式來結婚這兩種方法?也許是一個自定義的通用容器,可以在GUI中添加並可以從代碼輕鬆訪問?

+0

「*控制器填充視圖*」意味着按鈕的數量,位置,大小等是否改變,還是僅僅是從模型中繪製的文本? – jaco0646

+0

我的意思是視圖(JFrame)最初是空的。控制器根據模型中找到的數據直接添加JButton。我這樣實施並不重要,但解決一般問題在將來肯定對我有用。 –

回答

0

找出最好的選擇是將框架佈局切換爲特定類型(如GridBag),並在添加新組件時將佈局代碼包含在控制器中。不是最好的解決方案(我希望在Gui Builder中儘可能多地管理),但它似乎工作得很好。

0

NetBeans不需要Swing控件屬性的硬編碼值。您可以始終使用自定義代碼來在運行時設置屬性值。

例如,在這裏我有一個名爲'copyButton'的JButton,其文本當前被硬編碼爲複製copyButton Properties

但是,通過單擊指定的省略號,可以使用任何返回字符串的代碼來設置名稱。 copyButton text property

+0

我確實偶然發現了這個問題,並將其標記在我的記憶中,但它只針對現有的組件,據我所知。任何方式使用該功能在運行時觸發組件生成? –

+0

我能想到的唯一事情就是預先創建隱藏的組件,並使用'setVisible'屬性使它看起來好像它們是在運行時創建的。除此之外,我想看一下NetBeans源代碼,看看它們是如何實現的。 – jaco0646

相關問題