当前位置:首页 » 编程语言 » javajtree

javajtree

发布时间: 2022-05-21 09:34:35

java JTree 布局

第一个是改变一下显示风格。
第二个,应该是你使用了布局。换成null的即可控制。
标记一下,晚上给出代码。

❷ java组件JTree问题,怎么给树的子节点注册鼠标双击监听

就是用JTree.addMouseListener就可以了。
然后在mouseClicked(MouseEvent e)方法中通过下面的方法获取所选的结点
TreePath path = testTree.getPathForLocation(e.getX(), e.getY());
TreeNode node = (TreeNode) path.getLastPathComponent();
可以用e.getClickCount()方法的返回值来判断是否双击

❸ 如何去掉Java中jtree中的背景颜色

/实例化一个DefaultTreeCellRenderer对象
DefaultTreeCellRenderer cellRender=new DefaultTreeCellRenderer();
//设置处于折叠状态下非叶子节点的图标
cellRender.setClosedIcon(new ImageIcon(EmployeeInfo.class.getResource("/org/somken//00003.gif")));
//设置叶子节点的图标
cellRender.setLeafIcon(new ImageIcon(EmployeeInfo.class.getResource("/org/somken//00004.gif")));
//设置处于展开状态下非叶子节点的图标
cellRender.setOpenIcon(new ImageIcon(EmployeeInfo.class.getResource("/org/somken//00002.gif")));
//设置非选定节点的背景色
cellRender.(Color.WHITE);
//设置节点在选中状态下的背景色
cellRender.setBackgroundSelectionColor(Color.lightGray);
//设置选中状态下节点边框的颜色
cellRender.setBorderSelectionColor(Color.MAGENTA);
//设置绘制选中状态下节点文本的颜色
cellRender.setTextSelectionColor(Color.MAGENTA);
tree.setCellRenderer(cellRender);

❹ Java中,Jtree的setShowsRootHandles(true)有什么实际用途

设置 showsRootHandles 属性的值,它指定是否应显示节点句柄。此属性的默认值取决于用于创建 JTree 的构造方法。某些外观可能不支持句柄;它们将忽略此属性。
这是java api中对这个方法的解释,具体的就是先不显示根(你添加到树中的root)所延伸出来的线条,默认是true

❺ Java中JTree用setRootVisible(false)隐藏它的根节点后,整棵树都不显示了,该怎么办啊

需要在设置子节点后,并且先设置根节点展开,再setRootVisible(false)就可以了。

网页链接

❻ 初学java,如何把JTree组件添加到界面中


/**
*把代码复制到文件,可以运行。
*/
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.Component;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.Graphics2D;
importjava.awt.Rectangle;
importjava.awt.Transparency;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.awt.image.BufferedImage;
importjavax.swing.Icon;
importjavax.swing.ImageIcon;
importjavax.swing.JDialog;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTree;
importjavax.swing.UIManager;
importjavax.swing.tree.DefaultMutableTreeNode;
importjavax.swing.tree.TreeCellRenderer;

/**
*
*@authorbeans
*/
publicclassTreeMain{

publicstaticvoidmain(String[]args){
newTreeMain().showDialog();
}

publicTreeMain(){
}

/**
*显示窗口
*/
privatevoidshowDialog(){
JDialogdialog=newJDialog();

dialog.setBounds(newRectangle(50,50,380,280));
dialog.setTitle("演示树");

dialog.addWindowListener(newWindowAdapter(){

@Override
publicvoidwindowClosing(WindowEvente){
dialog.setVisible(false);
dialog.dispose();
}
});

dialog.add(this.getPanel(),BorderLayout.CENTER);
dialog.setVisible(true);
}

privateJPanelgetPanel(){
JPanelpanel=newJPanel();
JScrollPanetreePanel=newJScrollPane();
treePanel.setViewportView(this.getTree());
javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(panel);
panel.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(treePanel,javax.swing.GroupLayout.DEFAULT_SIZE,380,Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(treePanel,javax.swing.GroupLayout.PREFERRED_SIZE,272,javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(18,Short.MAX_VALUE))
);
panel.add(treePanel,BorderLayout.CENTER);
returnpanel;
}

/**
*取得树。
*
*@return
*/
privateJTreegetTree(){
DefaultMutableTreeNoderoot=newDefaultMutableTreeNode();
root.add(this.getNode());
root.add(this.getNode());
root.add(this.getNode());
JTreejtree=newJTree(root);
jtree.setRootVisible(false);
jtree.setCellRenderer(newCTreeCellRenderer());
jtree.expandRow(1);
returnjtree;
}

/**
*取得树节点。
*
*@return
*/
(){
DefaultMutableTreeNodenode=newDefaultMutableTreeNode(newNodeObject(true,"节"));
for(inti=0;i<5;i++){
DefaultMutableTreeNodeleaf=newDefaultMutableTreeNode(newNodeObject(false,"叶"+i));
node.add(leaf);
}
returnnode;
}

/**
*树节点和树叶,关联对象。
*/
classNodeObject{

booleanisNode;
Stringname;

/**
*
*@paramisNodethevalueofisNode
*@paramnamethevalueofname
*/
NodeObject(booleanisNode,Stringname){
this.isNode=isNode;
this.name=name;
}

/**
*图标
*
*@paramisSelect选中节点时返回不同的图标。
*@return
*/
ImageIcongetIcon(booleanisSelect){
intwh=20;
BufferedImageimage=newBufferedImage(wh,wh,BufferedImage.TYPE_INT_ARGB);
Graphics2Dg2=image.createGraphics();

image=g2.getDeviceConfiguration().createCompatibleImage(wh,wh,Transparency.TRANSLUCENT);
Graphics2Dg2d=image.createGraphics();
Fontfont=newFont("Dialog",Font.PLAIN,wh-4);
g2d.setFont(font);
g2d.setBackground(Color.WHITE);
g2d.setColor(Color.BLACK);
g2d.drawString(isSelect?"S":"N",0,wh-1);
g2d.setColor(this.isNode?Color.RED:Color.YELLOW);
g2d.drawLine(0,5,wh,5);
g2d.drawLine(0,10,wh,10);
g2d.drawLine(0,15,wh,15);

g2d.dispose();
g2.dispose();
returnnewImageIcon(image);
}

StringgetName(){
returnthis.name;
}
}

/**
*树渲染器
*/
{

protectedColorm_textSelectionColor;
protectedColorm_textNonSelectionColor;
protectedColorm_bkSelectionColor;
protectedColorm_bkNonSelectionColor;
protectedColorm_borderSelectionColor;
protectedbooleanm_selected;

publicCTreeCellRenderer(){
m_textSelectionColor=UIManager.getColor("Tree.selectionForeground");
m_textNonSelectionColor=UIManager.getColor("Tree.textForeground");
m_bkSelectionColor=UIManager.getColor("Tree.selectionBackground");
m_bkNonSelectionColor=UIManager.getColor("Tree.textBackground");
m_borderSelectionColor=UIManager.getColor("Tree.selectionBorderColor");
}

@Override
(JTreetree,Objectvalue,
booleanselected,booleanexpanded,booleanleaf,introw,booleanhasFocus){
DefaultMutableTreeNodenode=(DefaultMutableTreeNode)value;
NodeObjectobj=(NodeObject)node.getUserObject();
this.setIcon(obj.getIcon(selected));
this.setText(""+obj.getName()+"");
this.setForeground(selected?m_textSelectionColor:m_textNonSelectionColor);
this.setBackground(selected?m_bkSelectionColor:m_bkNonSelectionColor);
this.m_selected=selected;
returnthis;
}

@Override
publicvoidpaint(Graphicsg){
ColorbColor=this.getBackground();
Iconicon=this.getIcon();

g.setColor(bColor);
intoffset=0;
if(icon!=null&&getText()!=null){
offset=(icon.getIconWidth()+this.getIconTextGap());
}
g.fillRect(offset,0,this.getWidth()-1-offset,this.getHeight()-1);

if(this.m_selected){
g.setColor(this.m_borderSelectionColor);
g.drawRect(offset,0,this.getWidth()-1-offset,this.getHeight()-1);
}
super.paint(g);
}
}

}

❼ java怎样把一个现有文件夹的结构创建成一个JTree

package tmp;


import java.awt.BorderLayout;

import java.awt.EventQueue;

import java.awt.Graphics;

import java.awt.Image;


import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

import javax.swing.tree.DefaultMutableTreeNode;

import javax.swing.tree.TreeNode;

import javax.swing.Icon;

import javax.swing.JSplitPane;

import javax.swing.JTree;

import javax.swing.JLabel;

import javax.swing.SwingUtilities;


import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.io.File;

import java.util.Arrays;


public class TestJTree extends JFrame {


private JPanel contentPane;

private Picture pic=null;

private String rootPath=TestJTree.class.getResource("/").getPath();

private JTree tree;

/**

* Launch the application.

*/

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public void run() {

try {

TestJTree frame = new TestJTree();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}


/**

* Create the frame.

*/

public TestJTree() {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

contentPane.setLayout(new BorderLayout(0, 0));

setContentPane(contentPane);

JSplitPane splitPane = new JSplitPane();

splitPane.setDividerLocation(120);

contentPane.add(splitPane, BorderLayout.CENTER);

MyTreeNode AA = new MyTreeNode(new File(rootPath+"AA"));

tree = new JTree(AA);

tree.addMouseListener(new MouseAdapter() {

@Override

public void mouseClicked(MouseEvent e) {

if (SwingUtilities.isLeftMouseButton(e)&& e.getClickCount() == 1) {

MyTreeNode node = (MyTreeNode) tree.getLastSelectedPathComponent();

FileNode fn=(FileNode) node.getUserObject();

File f=fn.getFile();

if(!f.isDirectory()){

pic.loadPic(f.getAbsolutePath());

}

}

}

});

splitPane.setLeftComponent(tree);

pic=new Picture();

splitPane.setRightComponent(pic);

}


}

class MyTreeNode extends DefaultMutableTreeNode{

MyTreeNode(File file){

super(new FileNode(file));

FileNode fn=(FileNode)this.userObject;

File f=fn.getFile();

if(f.isDirectory()){

File[] fs=f.listFiles();

for(File ff:fs){

this.add(new MyTreeNode(ff));

}

}

}

}

class FileNode{

private String name;

private File file;

public FileNode(File file){

this.file=file;

name=file.getName();

}

public String toString(){

return name;

}

public String getName() {

return name;

}

public File getFile() {

return file;

}

}

class Picture extends JPanel {


private String picName;

public Picture(String picName){

this.picName=picName;

}

public Picture() {

}

public void paint (Graphics g) {

g.clearRect(0, 0, this.getWidth(), this.getWidth());

if(this.picName!=null){

Image image = this.getToolkit().getImage(picName);

g.drawImage(image, 0, 0, this);

}

}

public void loadPic(String picName){

this.picName=picName;

repaint();

}

}

//界面编程经验不多,代码可能有诸多不当之处,见谅

❽ java的JTree的使用方法,

JTree组件被用来以树的形式显示数据,一层套一层,看起来清晰明了,使用户很方便地就了解到各个节点之间的层次关系,可以很容易地找到相关的数据。

例如 Windows 系统的文件管理器,它就是一个典型的树层次结构。


JTree的构造函数:

·JTree() 建立一棵默认的树。

·JTree(Hashtable data) 利用Hashtable建立树。

·JTree(Object[] data) 利用数组建立树。

·JTree(TreeModel model) 利用TreeModel建立树。

·JTree(TreeNode root) 建立以root为根的树。

·JTree(TreeNode root,Boolean children) 建立以 root 为根的树,并设定是否允许有子节点。

·JTree(Vector value) 利用Vector建立树。


使用一个JTree可以简单地像下面这样表示:


importjavax.swing.JFrame;
importjavax.swing.JTree;
importjavax.swing.event.TreeSelectionEvent;
importjavax.swing.event.TreeSelectionListener;
importjavax.swing.tree.DefaultMutableTreeNode;

publicclassTreeDemo{
publicstaticvoidmain(String[]args){

//创建没有父节点和子节点、但允许有子节点的树节点,并使用指定的用户对象对它进行初始化。
//publicDefaultMutableTreeNode(ObjectuserObject)
DefaultMutableTreeNodenode1=newDefaultMutableTreeNode("软件部");
node1.add(newDefaultMutableTreeNode(newUser("小花")));
node1.add(newDefaultMutableTreeNode(newUser("小虎")));
node1.add(newDefaultMutableTreeNode(newUser("小龙")));

DefaultMutableTreeNodenode2=newDefaultMutableTreeNode("销售部");
node2.add(newDefaultMutableTreeNode(newUser("小叶")));
node2.add(newDefaultMutableTreeNode(newUser("小雯")));
node2.add(newDefaultMutableTreeNode(newUser("小夏")));

DefaultMutableTreeNodetop=newDefaultMutableTreeNode("职员管理");

top.add(newDefaultMutableTreeNode(newUser("总经理")));
top.add(node1);
top.add(node2);
finalJTreetree=newJTree(top);
JFramef=newJFrame("JTreeDemo");
f.add(tree);
f.setSize(300,300);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//添加选择事件
tree.addTreeSelectionListener(newTreeSelectionListener(){

@Override
publicvoidvalueChanged(TreeSelectionEvente){
DefaultMutableTreeNodenode=(DefaultMutableTreeNode)tree
.getLastSelectedPathComponent();

if(node==null)
return;

Objectobject=node.getUserObject();
if(node.isLeaf()){
Useruser=(User)object;
System.out.println("你选择了:"+user.toString());
}

}
});
}
}

classUser{
privateStringname;

publicUser(Stringn){
name=n;
}

//重点在toString,节点的显示文本就是toString
publicStringtoString(){
returnname;
}
}

❾ java swing jtree 什么是树的数据模型

Swing树使用人们所熟悉的文件夹和树叶图来显示分层的数据。树由节点组成,节点可以是文件夹,也可以是树叶。文件夹可以有子节点,除根节点之外的所有节点都只有一个父节点。空的文件夹与树叶的不同之处就在于它允许有子节点。
除父节点和子节点外,树的节点还有一个用户对象(当使用DefaultTreeModel时就会呈现一个用户对象)。用户对象是Object类型,因此它提供了一个将任意对象与节点相关联的办法。
树有一个简单的模型,每一个JTree实例都要维护对绘制器和编辑器的引用,这个绘制器和编辑器被树中所有的节点所使用。表1中列出了swing.tree包中的主要类。
1.构建树
DefaultMutableTreeNode root = new DefaultMutableTreeNode("World");//为了构建一个默认的树模型,必须提供一个根节点
DefaultMutableTreeNode country = new DefaultMutableTreeNode("USA");
root.add(country);
...
DefaultTreeModel treeModel = new DefaultTreeModel(root);//用根节点构建一个DefaultTreeModel树模型
JTree tree = new JTree(treeModel);//用这个树模型构建一个JTree树
或者,直接将根节点传递给JTree构造器,那么这课树会自动构建一个默认的树模型:
JTree tree = new JTree(root);
Container contentPane = getContentPane();
contentPane.add(new JScrollPane(tree));

❿ java树组件JTree的用法,要求详解啊!!

树都是由节点组成的.并且一颗树只有一个根节点,下面是代码运行的javapackage demo1;import java.awt.Toolkit;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.Dimension;public class Application1 {
boolean packFrame = false; /**
* Construct and show the application.
*/
public Application1() {
Frame1 frame = new Frame1();
// Validate frames that have preset sizes
// Pack frames that have useful preferred size info, e.g. from their layout
if (packFrame) {
frame.pack();
}
else {
frame.validate();
} // Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation( (screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
frame.setVisible(true);
} /**
* Application entry point.
*
* @param args String[]
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception exception) {
exception.printStackTrace();
} new Application1();
}
});
}
}package demo1;
import java.awt.Toolkit;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.Dimension;
import java.awt.*;
import javax.swing.*;
import java.awt.Dimension;
import java.awt.Rectangle;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.BorderFactory;public class Frame1
extends JFrame {
JPanel contentPane;
JPanel jPanel1 = new JPanel();
JTree jTree1;
BorderLayout borderLayout1 = new BorderLayout();

public Frame1() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
}
catch (Exception exception) {
exception.printStackTrace();
}
} /**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(null);
setSize(new Dimension(465, 380));
setTitle("Frame Title");
jPanel1.setBorder(BorderFactory.createEtchedBorder());
jPanel1.setBounds(new Rectangle(37, 12, 216, 317));
jPanel1.setLayout(borderLayout1);
contentPane.add(jPanel1);
DefaultMutableTreeNode root=new DefaultMutableTreeNode("根节点");
DefaultMutableTreeNode r1=new DefaultMutableTreeNode("子节点");
DefaultMutableTreeNode r01=new DefaultMutableTreeNode("子节点下的节点");
DefaultMutableTreeNode r2=new DefaultMutableTreeNode("子节点2");
DefaultMutableTreeNode r3=new DefaultMutableTreeNode("子节点三");
// 向根节点中添加子节点
root.add(r1);
root.add(r2);
r1.add(r01);
root.add(r3);
jTree1=new JTree(root);
jPanel1.add(jTree1, java.awt.BorderLayout.NORTH);
//传入根节点
this.setVisible(true);
this.setBounds(100,100,400,500); }
public static void main(String[] args) {
Frame1 f=new Frame1();
}
}

热点内容
怎么改密码锁 发布:2025-02-13 23:47:39 浏览:852
androidbitmap获取大小 发布:2025-02-13 23:47:38 浏览:559
怎么把升级鸿蒙系统变回安卓 发布:2025-02-13 23:36:07 浏览:595
偶校验c语言 发布:2025-02-13 23:22:52 浏览:937
芒果如何提取离线缓存视频 发布:2025-02-13 23:16:12 浏览:793
王者荣耀微信区安卓哪里分低 发布:2025-02-13 23:14:10 浏览:658
安装linuxvmwaretools 发布:2025-02-13 22:56:02 浏览:8
浪潮服务器如何引导系统安装光盘 发布:2025-02-13 22:56:02 浏览:112
java多线程的同步 发布:2025-02-13 22:46:15 浏览:920
软件使用权限里存储关闭还是打开 发布:2025-02-13 22:46:11 浏览:382