2016-07-14 1 views
0

ファイルをブラウズする機能をプログラムに追加しようとしました。私はここからコードを使用したかった:1(ギルバートの答え)が、JTreeを特定の位置とサイズにすることが重要だった。残念なことに、私がこれをしたとき、JTreeはそれをクリックすると "応答"しません。JTreeをLayoutManagerなしで使用することはできません

ここでは、コードです:

public class Frame extends JFrame implements Runnable { 

private DefaultMutableTreeNode root; 

private DefaultTreeModel treeModel; 

private JTree tree; 
public File fileRoot; 

public Frame(){ 
    super("FileBrowser"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 

    setSize(480, 320); 
    setLocation(50,50); 
    getContentPane().setLayout(null); 

    fileRoot = new File("C:/"); 
    root = new DefaultMutableTreeNode(new FileNode(fileRoot)); 
    treeModel = new DefaultTreeModel(root); 

    tree = new JTree(treeModel); 

    tree.setBounds(10, 39, 155, 177); 
    getContentPane().add(tree); 
    tree.setShowsRootHandles(true); 

} 


@Override 
public void run() { 
    CreateChildNodes ccn = new CreateChildNodes(fileRoot, root); 
    new Thread(ccn).start(); 
} 

} 

メインクラス:

public class main { 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Frame()); 
    } 
} 

私は

getContentPane().setLayout(null); 

コメントとJTreeには、フレーム全体を埋めてみましょうすると、それはそれは

答えて

1
必要として動作しますが、

変更を試みる次の行:

tree.setBounds(10, 39, 155, 177); 
getContentPane().add(tree); 

JScrollPane scroller = new JScrollPane(tree); 
scroller.setBounds(10, 39, 155, 177); 
getContentPane().add(scroller); 

に私の提案は効果がありません場合は、私が間違っているかを見ることができますので、SSCCEを作成してみてください。

P.S.レイアウトマネージャーを学びましょう。彼らは非常に便利です。

+0

ありがとうございます!私は一般的に、レイアウトマネージャを使用するほうがはるかに優れていることを知っていますが、私の場合は特定の画面にプログラムを表示したいのですが、レイアウトは重要な機能ではないので、 – Ch0mik18

+1

その答えのものを拡張するには**注意を払う価値がある** Java GUIは、異なるロケールで異なるPLAFを使用する異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 –

+0

@ Ch0mik18この場合、正しい答えを受け入れるといいでしょう。 –

関連する問題