2016-07-14 8 views
0

내 프로그램에 파일을 탐색하는 기능을 추가하려고했습니다. 여기에서 코드를 사용하고 싶습니다 : 1 (Gilbert의 대답), JTree를 특정 위치와 크기로 갖는 것이 중요했습니다. 불행히도, 내가 이것을했을 때, JTree는 그것을 클릭 할 때 "응답"하지 않습니다.LayoutManager없이 JTree를 사용할 수 없습니다.

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(); 
} 

} 

Main 클래스 : 여기

코드의 작동, 내가

getContentPane().setLayout(null); 

주석과의 JTree가 전체 프레임을 채울 수 있도록하면

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

로해야

답변

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. 레이아웃 관리자를 배우십시오. 그들은 매우 유용합니다.

+0

감사합니다. 작동합니다! 일반적으로 레이아웃 관리자를 사용하는 것이 훨씬 낫다는 것을 알고 있습니다. 그러나 제 경우에는 특정 프로그램을 특정 화면에 표시하고 레이아웃이 핵심 기능이 아니므로 더 쉬운 방법을 선택했습니다. – Ch0mik18

+1

그 대답을 확장하려면 ** 대부분주의를 기울일 가치가 있습니다. Java GUI는 다른 로케일에서 다른 PLAF를 사용하여 다른 OS, 화면 크기, 화면 해상도 등에서 작동해야합니다. 따라서, 픽셀 완벽한 레이아웃에 도움이되지 않습니다. 대신 레이아웃 관리자 또는 [조합] (http://stackoverflow.com/a/5630271/418556)과 [공백] 레이아웃 채우기 및 테두리 (http://stackoverflow.com/a/17874718/)를 사용하십시오. 418556). –

+0

@ Ch0mik18이 경우 정확한 답을 수락하면 좋을 것입니다. –