2012-11-26 41 views
0

這可能是一個簡單的問題,我不太習慣Java編程。但我需要創建一個CheckboxTree一個對話框(的JTree與複選框變體,見http://www.javaworld.com/javaworld/jw-09-2007/jw-09-checkboxtree.html將JTree(CheckboxTree)添加到JDialog中

請注意:我創建在NetBeans的圖形化環境JDialog,因此它添加按鈕等生成的代碼所以,我需要知道如何創造的主要部分後添加此樹,可以這麼說...也許這就是問題所在,因爲如果我做這樣的事情:

JPanel panel = new JPanel(); 
    this.setContentPane(panel); 

然後,我居然看到了樹在對話框中顯示,但所有的按鈕和所有按鈕都沒有了...

I已經能夠將其添加到JFrame和選項面板,但我希望它在自定義JDialog。任何人都可以以非常簡單的方式向我解釋我需要做什麼?

這裏是我微弱的嘗試至今:

構造對JDialog:

public MetadataUI(java.awt.Frame parent, boolean modal) { 
    super(parent, modal); 
    initComponents(); 

    Container panel = getContentPane(); 
    panel.add(getTree()); 
    panel.repaint(); 
    this.pack(); 
} 
創建該checkboxtree

getTree方法:

private static CheckboxTree getTree() { 
    DefaultMutableTreeNode root, child; 

    root = new DefaultMutableTreeNode("root"); 

    child = new DefaultMutableTreeNode("Colors"); 
    root.add(child); 
    child.add(new DefaultMutableTreeNode("Cyan")); 
    child.add(new DefaultMutableTreeNode("Magenta")); 
    child.add(new DefaultMutableTreeNode("Yellow")); 
    child.add(new DefaultMutableTreeNode("Black")); 


    CheckboxTree checkboxTree = new CheckboxTree(root); 
    checkboxTree.setVisible(true); 
    return checkboxTree; 
} 

這重繪和一切是最後一個嘗試基於我發現谷歌搜索的東西,但它沒有任何區別,所以我猜我走了。

最好添加樹並使其可見的最簡單方法。它似乎與添加它的JTree完全一樣,但我無法使其工作。所以即使沒有人對這個特定的checkboxtree插件有經驗,在JDialog中使用JTree的相同(最簡單)代碼也許會這樣!

編輯:

針對安德魯,這裏是同樣的事情(我最好的嘗試)與常規的JTree:

private static JTree getTree() { 
    DefaultMutableTreeNode root, child; 

    root = new DefaultMutableTreeNode("root"); 

    child = new DefaultMutableTreeNode("Colors"); 
    root.add(child); 
    child.add(new DefaultMutableTreeNode("Cyan")); 
    child.add(new DefaultMutableTreeNode("Magenta")); 
    child.add(new DefaultMutableTreeNode("Yellow")); 
    child.add(new DefaultMutableTreeNode("Black")); 


    JTree tree = new JTree(root); 
    tree.setVisible(true); 
    return tree; 
} 

編輯2:

在迴應馬克西姆,我困惑。對你而言顯而易見的事情可能會迷失在我身上。從你的代碼借用一些東西,這是我能想出的最好的(不工作):

​​
+0

*「相同的(簡單)使用一個JTree在一個JDialog代碼可能會做!」 *同上,作爲一個[SSCCE(http://sscce.org/)你最好的嘗試。 –

+0

@AndrewThompson:對不起,我不明白的評論... – Anders

+0

郵報SSCCE(使用標準的一個'JTree')你最好的嘗試。 –

回答

1

如果您確實創建了Netbeans的GUI(這是一個JDialog形式),你想組件您的JDialog融入你已經擁有的提供了一個無參數的構造函數,請嘗試以下操作:

  1. 設計模式下打開現有的JDialog
  2. Navigator視圖右鍵單擊[JDialog]或者你的頂級節點是什麼(應該是「其他組件」的兄弟)並且選擇Add From Palette > Beans > Choose Bean
  3. 爲表示你的JTree組件的類輸入完全限定的名稱(例如, com.example.jtree.SomeJTreeComponent)並確認。如果組件是trreely JTree它可能會被添加沒有任何問題。
  4. (可選)此時樹可以或可以不被一個JScrollPane內包圍。如果不是,您可以手動新添加的組件上重複步驟2的部位和周圍選擇Enclose in這一次做到這一點。

你需要手工編程其他的東西。我建議你閱讀JTree Tutorial或參考你的第三方組件的文檔來幫助你完成。

您可能還需要閱讀更多有關tool您使用的是建立自己的GUI。

+0

非常感謝!那樣做了! :-) – Anders