簡體   English   中英

Java數據綁定最佳實踐

[英]Java Data binding best practices

即使我不是Java新手,我也只是在學校/大學環境中使用它,所以我不知道企業中使用的所有最佳實踐。

特別是我現在正在開發一個Java桌面應用程序(在UI層使用Swing),我對使用swing組件進行數據綁定的最佳實踐特別感興趣。

例如,我可以在模型層有一個模型對象列表,我需要在JTable中顯示它們。 然后,當選擇JTable的單行時,我需要在一些JLabel上顯示與所選行對應的模型對象的一些信息。

我應該使用哪些庫? 這樣做的最佳做法是什么?

我正在尋找一些鏈接/文章/教程(/書籍?)來深入研究這個主題,並了解各種解決方案的優缺點。

對於您給出的具體示例,我建議采用以下方法:

  1. 將模型對象表示為List<Model> ,其中List實現支持RandomAccess (例如ArrayList )。
  2. 子類AbstractTableModel並覆蓋getValueAt(int row, int col)以索引到List<Model>並檢索相應的Model實例。 然后返回要綁定到column: col的特定屬性。

總的來說,在涉及數據綁定而不是使用框架時,我會自己動手。 對於編輯器樣式的面板,我通常實現三個方法: initialise()commit()clear() ,其中initialise采用正在編輯的域對象的實例, commit應用任何更改並返回域對象的修改實例,以及clear清除所有UI組件值或將其設置回默認值。

始終打開應用程序進行擴展,並牢記耦合因素。 我的意思是你應該將所有數據模型存儲在不同的數據結構中,而不管UI層(Swing組件)。 您應該嘗試使用單獨的松散耦合(具有單獨的數據提供程序包)數據結構,該數據結構將為您提供所需的所有值。 一旦設計到位,您就可以開始擔心UI綁定了。

擁有一個簡潔的UI IDE(如Netbeans),用於與swing相關的開發。 總是去布局 布局一開始很難設計,但是一旦你開始使用布局,它將非常有用和方便。 你將進一步了解Swing和當然Swingworkers的聽眾。 做一個谷歌,你會發現這些非常好的資源。

要處理選擇操作,您需要在JTable的選擇模型上實現ListSelectionListener 你可以在這里這里得到一些細節。

一旦事件被觸發,您將獲得有關偶數的一些數據,包括事件的source 您還將獲得前導選擇索引,您可以使用該索引來標識所選行(假設您不允許多項選擇)。 您必須從表模型(或其他共享模型,取決於您的模型設計)收集數據對象,以獲取按鈕的值。

我不知道擺動很好,但你有沒有嘗試過模型gui mediator模式? 適用於所有語言和任何gui組件。

暫無
暫無

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

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