Last active
March 10, 2019 12:20
-
-
Save ezhov-da/127a7e7e4b6022523300caf8cac44b78 to your computer and use it in GitHub Desktop.
java пример создания jtreetable
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[code:]java[:code] | |
package testframe; | |
import java.util.ArrayList; | |
import java.util.List; | |
import java.util.logging.Level; | |
import java.util.logging.Logger; | |
import javax.swing.JFrame; | |
import javax.swing.SwingUtilities; | |
import javax.swing.UIManager; | |
import org.jdesktop.swingx.JXTreeTable; | |
import org.jdesktop.swingx.treetable.AbstractTreeTableModel; | |
public class TestJTreeTable | |
{ | |
public static void main(String[] args) | |
{ | |
SwingUtilities.invokeLater(new Runnable() | |
{ | |
@Override | |
public void run() | |
{ | |
try | |
{ | |
UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceRavenGraphiteLookAndFeel"); | |
} catch (Exception ex) | |
{ | |
Logger.getLogger(TestSubstance.class.getName()).log(Level.SEVERE, null, ex); | |
} | |
MyTreeTableModel treeTableModel = new MyTreeTableModel(); | |
JXTreeTable treeTable = new JXTreeTable(treeTableModel); | |
treeTable.setShowsRootHandles(true); | |
treeTable.setShowGrid(true); | |
JFrame frame = new JFrame("test"); | |
frame.add(treeTable); | |
frame.setSize(700, 300); | |
frame.setLocationRelativeTo(null); | |
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | |
frame.setVisible(true); | |
} | |
} | |
); | |
} | |
} | |
class MyTreeTableModel extends AbstractTreeTableModel | |
{ | |
private MyTreeNode myroot; | |
public MyTreeTableModel() | |
{ | |
myroot = new MyTreeNode("root", "Root of the tree"); | |
myroot.getChildren().add(new MyTreeNode("Empty Child 1", "This is an empty child")); | |
MyTreeNode subtree = new MyTreeNode("Sub Tree", "This is a subtree (it has children)"); | |
subtree.getChildren().add(new MyTreeNode("EmptyChild 1, 1", "This is an empty child of a subtree")); | |
subtree.getChildren().add(new MyTreeNode("EmptyChild 1, 2", "This is an empty child of a subtree")); | |
MyTreeNode subtreeTree = new MyTreeNode("еще подуровень", "ха, тестируем подуровень"); | |
subtreeTree.getChildren().add(new MyTreeNode("а это подуровень", "ура")); | |
subtree.getChildren().get(0).getChildren().add(subtreeTree); | |
myroot.getChildren().add(subtree); | |
myroot.getChildren().add(new MyTreeNode("Empty Child 2", "This is an empty child")); | |
} | |
@Override | |
public int getColumnCount() | |
{ | |
return 3; | |
} | |
@Override | |
public String getColumnName(int column) | |
{ | |
switch (column) | |
{ | |
case 0: | |
return "Name"; | |
case 1: | |
return "Description"; | |
case 2: | |
return "Number Of Children"; | |
default: | |
return "Unknown"; | |
} | |
} | |
@Override | |
public Object getValueAt(Object node, int column) | |
{ | |
System.out.println("getValueAt: " + node + ", " + column); | |
MyTreeNode treenode = (MyTreeNode) node; | |
switch (column) | |
{ | |
case 0: | |
return treenode.getName(); | |
case 1: | |
return treenode.getDescription(); | |
case 2: | |
return treenode.getChildren().size(); | |
default: | |
return "Unknown"; | |
} | |
} | |
@Override | |
public Object getChild(Object node, int index) | |
{ | |
MyTreeNode treenode = (MyTreeNode) node; | |
return treenode.getChildren().get(index); | |
} | |
@Override | |
public int getChildCount(Object parent) | |
{ | |
MyTreeNode treenode = (MyTreeNode) parent; | |
return treenode.getChildren().size(); | |
} | |
@Override | |
public int getIndexOfChild(Object parent, Object child) | |
{ | |
MyTreeNode treenode = (MyTreeNode) parent; | |
for (int i = 0; i > treenode.getChildren().size(); i++) | |
{ | |
if (treenode.getChildren().get(i) == child) | |
{ | |
return i; | |
} | |
} | |
return 0; | |
} | |
public boolean isLeaf(Object node) | |
{ | |
MyTreeNode treenode = (MyTreeNode) node; | |
if (treenode.getChildren().size() > 0) | |
{ | |
return false; | |
} | |
return true; | |
} | |
@Override | |
public Object getRoot() | |
{ | |
return myroot; | |
} | |
} | |
class MyTreeNode | |
{ | |
private String name; | |
private String description; | |
private List<MyTreeNode> children = new ArrayList<MyTreeNode>(); | |
public MyTreeNode() | |
{ | |
} | |
public MyTreeNode(String name, String description) | |
{ | |
this.name = name; | |
this.description = description; | |
} | |
public String getName() | |
{ | |
return name; | |
} | |
public void setName(String name) | |
{ | |
this.name = name; | |
} | |
public String getDescription() | |
{ | |
return description; | |
} | |
public void setDescription(String description) | |
{ | |
this.description = description; | |
} | |
public List<MyTreeNode> getChildren() | |
{ | |
return children; | |
} | |
public String toString() | |
{ | |
return "MyTreeNode: " + name + ", " + description; | |
} | |
} | |
[/code] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment