簡體   English   中英

如何為每個JTree節點添加一個不同的JComboBox?

[英]How do I add a different JComboBox to each JTree node?

我有一個JTree,我正在為我正在編寫的Game Database程序填充技能。

有幾個類別和子類別(實際技能),然后將其級別以下(有時)。 目前,我正在使用一個技能類別,一些內部選項和一些枚舉以及一種檢查該技能是否為類別的方法(稱為isCategory)來模擬該技能。 還有兩件事要注意:

  1. 不同類型的技能表現不同。
    有些被購買一次,其他幾次,有些可以選擇等等
  2. 不同的類別包含不同的技能。
    例如,“武器技能”類別具有不同類型的武器,但“裝甲技能”位於不同的部分。

我已經看到了一個非常好的示例,該示例是通過單元格渲染器將ComboBox附加到樹中的每個節點上的。 這是我找到的示例

我理解上面的代碼,但看不到如何將組合框附加到節點而不是樹上? 我已經閱讀了“ 如何使用樹 ”,並且已經運行,並查看了tree的一些演示的代碼。 我可以制作基本的樹,但是我發現這些教程有點晦澀難懂,並且缺乏足夠的細節來自己尋找如何進行的方法。 我發現了另一個僅將葉節點呈現為復選框的示例 ,這要復雜得多。

顯然,我希望將兩者結合起來,能夠具有不同的類別,能夠具有不同的技能,而不同的技能具有不同的熟練水平。 但是,我想到的唯一方法是針對不同的類型使用不同的JComboBoxModels,但我不知道如何執行此操作,而且我也找不到方法。 我試圖編輯復選框示例以使用ComboBoxes,但是對於我而言,我無法弄清楚。

有人可以給我一個提示,告訴我采取什么方法,因為我是Java的新手,正在努力弄清楚該怎么做?

您應該實現TreeCellRenderer以及TreeCellEditor 兩者都應返回具有不同模型的JComboBox 應該根據值參數(實際上是樹節點)在getTreeCellEditorComponent / getTreeCellRenderingComponent決定選擇哪種模型。

是一個不錯的起點嗎?

從概念上講,是的。 JTableJTree使用flyweight模式來渲染和編輯單元格/節點。

  • 這個例子引用了一個基本的TreeCellRenderer
  • 示例說明了使用默認渲染器的簡單TreeCellEditor
  • 示例顯示了一個Outline視圖,該視圖結合了JTableJTree

圖片

暫無
暫無

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

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