expandRow(int row)
expandPath
行不行?我也不知道,没用过
expandPath
行不行?我也不知道,没用过
解决方案 »
- 求救,有创建类,怎么那个类new出来就报警?
- JFrame的子类调用repaint方法 有关问题
- String类的charAt方法
- 音乐播放器的问题 求高手指点!!!不知道咋回事
- 寻大侠:因为想做一个类似google输入法的界面来实现命令提示功能,使用KeyListener,但效果不理想,有大侠有好的建议么?
- 一个JTable 放在JScrollPane中,如果这个JTable有50行,而JScrollPane中一页只能显示20行,我想让JTable 从第25行开始显示,怎么做?
- PACKEER.EXE文件包装好JAVA文件后的步奏?
- 菜鸟请问:安装JDK后如何配置路径?
- 急!急!急!!偶笔记本的WINXP的用户密码忘了怎么办!?在线等待!
- 很简单的问题,在线等待
- 请所有的java高手看过来……
- 求救!无法用java调用苹果机的程序
// Java core packages
import java.awt.*;
import java.awt.event.*;
import java.util.*;// Java extension packages
import javax.swing.*;
import javax.swing.tree.*;public class PhilosophersJTree extends JFrame {
private JTree tree;
private DefaultTreeModel philosophers;
private DefaultMutableTreeNode rootNode;
// PhilosophersJTree constructor
public PhilosophersJTree()
{
super( "Favorite Philosophers" );
// get tree of philosopher DefaultMutableTreeNodes
DefaultMutableTreeNode philosophersNode =
getPhilosopherTree();
// create philosophers DefaultTreeModel
philosophers = new DefaultTreeModel( philosophersNode );
// create JTree for philosophers DefaultTreeModel
tree = new JTree( philosophers );
// create JButton for adding philosophers
JButton addButton = new JButton( "Add Philosopher" );
addButton.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent event )
{
addPhilosopher();
}
}
);
// create JButton for removing selected philosopher
JButton removeButton =
new JButton( "Remove Selected Philosopher" );
removeButton.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent event )
{
removeSelectedPhilosopher();
}
}
);
// lay out GUI components
JPanel inputPanel = new JPanel();
inputPanel.add( addButton );
inputPanel.add( removeButton );
Container container = getContentPane();
container.add( new JScrollPane( tree ),
BorderLayout.CENTER );
container.add( inputPanel, BorderLayout.NORTH );
setDefaultCloseOperation( EXIT_ON_CLOSE );
setSize( 400, 300 );
setVisible( true );
} // end PhilosophersJTree constructor
// add new philosopher to selected era
private void addPhilosopher()
{
// get selected era
DefaultMutableTreeNode parent = getSelectedNode(); // ensure user selected era first
if ( parent == null ) {
JOptionPane.showMessageDialog(
PhilosophersJTree.this, "Select an era.",
"Error", JOptionPane.ERROR_MESSAGE ); return;
}
// prompt user for philosopher's name
String name = JOptionPane.showInputDialog(
PhilosophersJTree.this, "Enter Name:" ); // add new philosopher to selected era
philosophers.insertNodeInto(
new DefaultMutableTreeNode( name ),
parent, parent.getChildCount() );
} // end method addPhilosopher
// remove currently selected philosopher
private void removeSelectedPhilosopher()
{
// get selected node
DefaultMutableTreeNode selectedNode = getSelectedNode();
// remove selectedNode from model
if ( selectedNode != null )
philosophers.removeNodeFromParent( selectedNode );
}
// get currently selected node
private DefaultMutableTreeNode getSelectedNode()
{
// get selected DefaultMutableTreeNode
return ( DefaultMutableTreeNode )
tree.getLastSelectedPathComponent();
}
// get tree of philosopher DefaultMutableTreeNodes
private DefaultMutableTreeNode getPhilosopherTree()
{
// create rootNode
DefaultMutableTreeNode rootNode =
new DefaultMutableTreeNode( "Philosophers" );
// Ancient philosophers
DefaultMutableTreeNode ancient =
new DefaultMutableTreeNode( "Ancient" );
rootNode.add( ancient );
ancient.add( new DefaultMutableTreeNode( "Socrates" ) );
ancient.add( new DefaultMutableTreeNode( "Plato" ) );
ancient.add( new DefaultMutableTreeNode( "Aristotle" ) );
// Medieval philosophers
DefaultMutableTreeNode medieval =
new DefaultMutableTreeNode( "Medieval" );
rootNode.add( medieval ); medieval.add( new DefaultMutableTreeNode(
"St. Thomas Aquinas" ) );
// Renaissance philosophers
DefaultMutableTreeNode renaissance =
new DefaultMutableTreeNode( "Renaissance" );
rootNode.add( renaissance );
renaissance.add( new DefaultMutableTreeNode(
"Thomas More" ) ); // Early Modern philosophers
DefaultMutableTreeNode earlyModern =
new DefaultMutableTreeNode( "Early Modern" );
rootNode.add( earlyModern ); earlyModern.add( new DefaultMutableTreeNode(
"John Locke" ) ); // Enlightenment Philosophers
DefaultMutableTreeNode enlightenment =
new DefaultMutableTreeNode( "Enlightenment" );
rootNode.add( enlightenment ); enlightenment.add( new DefaultMutableTreeNode(
"Immanuel Kant" ) );
// 19th Century Philosophers
DefaultMutableTreeNode nineteenth =
new DefaultMutableTreeNode( "19th Century" );
rootNode.add( nineteenth ); nineteenth.add( new DefaultMutableTreeNode(
"Soren Kierkegaard" ) ); nineteenth.add( new DefaultMutableTreeNode(
"Friedrich Nietzsche" ) ); // 20th Century Philosophers
DefaultMutableTreeNode twentieth =
new DefaultMutableTreeNode( "20th Century" );
rootNode.add( twentieth ); twentieth.add( new DefaultMutableTreeNode(
"Hannah Arendt" ) );
return rootNode;
} // end method getPhilosopherTree
// execute application
public static void main( String args[] )
{
new PhilosophersJTree();
}
}
if (aNode.isLeaf()) {
return;
}
aTree.expandPath(new TreePath( ( (DefaultMutableTreeNode) aNode).getPath()));
int n = aNode.getChildCount();
for (int i = 0; i < n; i++) {
expandTreeNode(aTree, (DefaultMutableTreeNode) aNode.getChildAt(i));
}
}
public void collapseTreeNode(JTree aTree, DefaultMutableTreeNode aNode) {
if (aNode.isLeaf()) {
return;
}
aTree.collapsePath(new TreePath( ( (DefaultMutableTreeNode) aNode).getPath()));
int n = aNode.getChildCount();
for (int i = 0; i < n; i++) {
collapseTreeNode(aTree, (DefaultMutableTreeNode) aNode.getChildAt(i));
}
}
http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html
会对你有帮助的
还有怎么更改不同层次的节点图标?
怎么给一个节点重命名?
=======================================
还有这几个问题!!
谢谢点烟看贴;请等分
ai92(抵制日货!!) 的程序我已经实现。谢谢,也有份!
然后就可以直接在树上进行编辑
右键改变的方法俺还真不知道
改变图标的问题,看看上面那个网页中的treeIconDemo2吧
要根据你的需要自定义TreeCellRender
:))))))
但是如何你有这个值,就可以用
JTree.getModel().valueForPathChanged(JTree.getSelectionPath(),newValue);
这个newValue是个Object类型,具体类型视你的树的节点存储数据而定
还有怎么更改不同层次的节点图标?
我试过用TreeCellRender
但是太难看了;
怎么设置节点的选择状态,反色;
右键设置StartEditing(path);
不是TreeModel就是Tree有这个属性
还有用一个函数全部展开全部折叠已实现
用树的编历
TreeUI是什么东西TreeUI是什么东西TreeUI是什么东西
TreeUI是什么东西TreeUI是什么东西TreeUI是什么东西
这个问题一解决马上结贴
TreeUI是什么东西TreeUI是什么东西TreeUI是什么东西
这个问题一解决马上结贴
TreeUI是什么东西TreeUI是什么东西TreeUI是什么东西
TreeUI是什么东西TreeUI是什么东西TreeUI是什么东西
这个问题一解决马上结贴
TreeUI是什么东西TreeUI是什么东西TreeUI是什么东西
TreeUI是什么东西TreeUI是什么东西TreeUI是什么东西
这个问题一解决马上结贴
TreeUI是什么东西TreeUI是什么东西TreeUI是什么东西
TreeUI是什么东西TreeUI是什么东西TreeUI是什么东西
这个问题一解决马上结贴
TreeUI是什么东西TreeUI是什么东西TreeUI是什么东西
TreeUI是什么东西TreeUI是什么东西TreeUI是什么东西
这个问题一解决马上结贴