처음으로 JTree
을 만들려고하지만 트리에 내 노드를 추가하려고하면 변경 사항이 적용되지 않고 표시되는 모든 노드에 기본 노드가있는 트리입니다 (색상, 스포츠, 음식).JTree가 추가 된 노드를 표시하지 않습니다.
내 주요 패널 코드가있는 나무가있는 :
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
public class Scenario1Panel extends JPanel
{
/**
*
*/
private static final long serialVersionUID = 1L;
public Scenario1Tree scenario1Tree;
public Scenario1Panel()
{
scenario1Tree = new Scenario1Tree();
add(scenario1Tree);
}
public static void main(String args[])
{
try
{
String lookAndFeel = UIManager.getSystemLookAndFeelClassName();
System.out.println(lookAndFeel);
UIManager.setLookAndFeel(lookAndFeel);
}
catch(Exception e)
{
System.out.println("couldn't get that LookAndFeel");
}
Scenario1Panel mgr = new Scenario1Panel();
JFrame frame = new JFrame();
frame.add(mgr);
frame.pack();
frame.setVisible(true);
}
}
이내 트리 코드는 다음과 같습니다
이import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeSelectionModel;
public class Scenario1Tree extends JTree
{
/**
*
*/
private static final long serialVersionUID = 1L;
private JTree tree;
public Scenario1Tree()
{
DefaultMutableTreeNode top = new DefaultMutableTreeNode("Scenario1");
createNodes(top);
tree = new JTree(top);
//Create a tree that allows one selection at a time.
tree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
//Create the scroll pane and add the tree to it.
JScrollPane treeView = new JScrollPane(tree);
}
private void createNodes(DefaultMutableTreeNode top) {
DefaultMutableTreeNode loginUser1 = null;
DefaultMutableTreeNode addNewUsers = null;
DefaultMutableTreeNode addNewUsersBreakout = null;
loginUser1 = new DefaultMutableTreeNode("Login User 1");
top.add(logintUser1);
addNewUsers = new DefaultMutableTreeNode("Add New Users");
top.add(addNewUsers);
addNewUsersBreakout = new DefaultMutableTreeNode("Add User2");
addNewUsers.add(addNewUsersBreakout);
addNewUsersBreakout = new DefaultMutableTreeNode("Add User3");
addNewUsers.add(addNewUsersBreakout);
addNewUsersBreakout = new DefaultMutableTreeNode("Add User4");
addNewUsers.add(addNewUsersBreakout);
addNewUsersBreakout = new DefaultMutableTreeNode("Add User5");
addNewUsers.add(addNewUsersBreakout);
}
public static void main(String args[])
{
try
{
String lookAndFeel = UIManager.getSystemLookAndFeelClassName();
System.out.println(lookAndFeel);
UIManager.setLookAndFeel(lookAndFeel);
}
catch(Exception e)
{
System.out.println("couldn't get that LookAndFeel");
}
Scenario1Tree tree = new Scenario1Tree();
JFrame frame = new JFrame();
frame.add(tree);
frame.pack();
frame.setVisible(true);
}
}
누군가가 내가 '무엇을 설명해 주시겠습니까 잘못하고있는거야? 당신이 전혀 JTree
인스턴스를 필요로하지 않는 사실에서 Scenario1Tree
대신 JTree
의 인스턴스를 생성하는 전화
setModel(new DefaultTreeModel(top));
에서
'공용 클래스 Scenario1Tree 새로운 기능이나 오버라이드 (override) 된 추가하지 않는 한 트리를 확장하지 마십시오 JTree'을 확장합니다. 'JPanel'을 확장하지 말고 그냥 인스턴스를 유지하십시오. –
먼저 JTree 데모/예제를 살펴보십시오. [YouTube] (http://www.youtube.com/watch?v=aEr4XVMVdRE) 또는 기타 [NetBeans IDE] (http://www.netbeans.org)에는 훌륭한 GUI 편집기가 있습니다. 코드를 검사하십시오. 어쩌면 이미 JTree 생성자 args로 더미 TreeModel을 사용하고 있기 때문에 이미 NetBeans를 사용하고있을 수도 있지만 루트 노드가있는 생성자를 호출 할 수도 있습니다. 이제 코드를 많이 변경해야합니다. –
문제는 Java를 사용한 적이 없기 때문에 새로운 것입니다. 이 예제를 따르려고했습니다. docs.oracle.com/javase/tutorial/uiswing/components/tree.html add와 같은 클래스에서 메소드를 사용하려면 extends를 사용해야합니까? "extends tree"를 제거하면 (Scenario1Tree)를 더 이상 사용할 수 없습니다. – Matt