javajtree大小的简单介绍

博主:adminadmin 2022-11-25 09:49:10 54

今天给各位分享javajtree大小的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA用Jtree动态画二叉树

给你代码。

--------------------------------------------------------------------------------------------

import java.util.Hashtable;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTree;

import javax.swing.UIManager;

import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;

public class App extends JFrame {

public App() {

try {

// Windows风格

UIManager.setLookAndFeel(new WindowsLookAndFeel());

} catch (Exception e) {

System.out.println(e.getMessage());

}

setDefaultCloseOperation(EXIT_ON_CLOSE);

setSize(383, 412);

setLocationRelativeTo(null);

getContentPane().setLayout(null);

JScrollPane scrollPane = new JScrollPane();

scrollPane.setBounds(12, 10, 351, 317);

getContentPane().add(scrollPane);

String[] s1 = { "张一", "张二" };

String[] s2 = { "王二", "李四" };

Hashtable hashtable1 = new Hashtable();

hashtable1.put("家人", s1);

hashtable1.put("朋友", s2);

JTree tree = new JTree(hashtable1);

scrollPane.setViewportView(tree);

JButton btnNewButton = new JButton("刷新");

btnNewButton.setBounds(12, 352, 93, 23);

getContentPane().add(btnNewButton);

JButton btnNewButton_1 = new JButton("退出");

btnNewButton_1.setBounds(270, 352, 93, 23);

getContentPane().add(btnNewButton_1);

setVisible(true);

}

public static void main(String[] args) {

new App();

}

}

java组件JTree问题

和使用树的示例,请参阅《The Java Tutorial》中的 How to Use Trees 一节。

树中特定的节点可以由 TreePath(封装节点及其所有祖先的对象)标识,或由其显示行(其中显示区域中的每一行都显示一个节点)标识。展开 节点是一个非叶节点(由返回 false 的 TreeModel.isLeaf(node) 标识),当展开 其所有祖先时,该节点将显示其子节点。折叠 节点是隐藏它们的节点。隐藏 节点是位于折叠祖先下面的节点。所有可查看 节点的父节点都是可以展开的,但是可以显示它们,也可以不显示它们。显示 节点是可查看的并且位于可以看到它的显示区域。

以下 JTree 方法使用 "visible" 来表示 "displayed":

isRootVisible()

setRootVisible()

scrollPathToVisible()

scrollRowToVisible()

getVisibleRowCount()

setVisibleRowCount()

下一组 JTree 方法使用 "visible" 表示 "viewable"(在展开的父节点下面):

isVisible()

makeVisible()

如果您有兴趣了解选择何时更改,请实现 TreeSelectionListener 接口,并使用方法 addTreeSelectionListener 添加实例。当选择更改时,将调用 valueChanged,即如果用户在同一节点上单击两次,则仅调用 valueChanged 一次。

如果有兴趣检测双击事件或用户何时单击节点(不管是否选中它),建议您执行以下操作:

final JTree tree = ...;

MouseListener ml = new MouseAdapter() {

public void mousePressed(MouseEvent e) {

int selRow = tree.getRowForLocation(e.getX(), e.getY());

TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());

if(selRow != -1) {

if(e.getClickCount() == 1) {

mySingleClick(selRow, selPath);

}

else if(e.getClickCount() == 2) {

myDoubleClick(selRow, selPath);

}

}

}

};

tree.addMouseListener(ml);

注:上述示例同时获取路径和行,但是您只需要获取感兴趣的内容。

要使用 JTree 显示复合节点(例如,同时包含图形图标和文本的节点),请为 TreeCellRenderer 创建子类,并使用 setCellRenderer(javax.swing.tree.TreeCellRenderer) 通知树使用它。要编辑此类节点,请为 TreeCellEditor 创建子类,并使用 setCellEditor(javax.swing.tree.TreeCellEditor)。

与所有 JComponent 类一样,可以使用 InputMap 和 ActionMap 将 Action 对象与 KeyStroke 关联,并在指定条件下执行操作!!

java 构造JTree

是这样的,因为JTree的所有构造方法最终都是使用一个TreeModel来构造的,也就是说不管你怎么构造,最终都会调用到下面的构造函数:

public JTree(TreeModel model);

当你调用JTree tree = new JTree();时,Java默认给你构造了一个TreeModel对象,内部实现如下:

this(getDefaultTreeModel());

getDefaultTreeModel方法是如下实现的:

DefaultMutableTreeNode defaultmutabletreenode = new DefaultMutableTreeNode("JTree");

DefaultMutableTreeNode defaultmutabletreenode1 = new DefaultMutableTreeNode("colors");

defaultmutabletreenode.add(defaultmutabletreenode1);

defaultmutabletreenode1.add(new DefaultMutableTreeNode("blue"));

defaultmutabletreenode1.add(new DefaultMutableTreeNode("violet"));

defaultmutabletreenode1.add(new DefaultMutableTreeNode("red"));

defaultmutabletreenode1.add(new DefaultMutableTreeNode("yellow"));

defaultmutabletreenode1 = new DefaultMutableTreeNode("sports");

defaultmutabletreenode.add(defaultmutabletreenode1);

defaultmutabletreenode1.add(new DefaultMutableTreeNode("basketball"));

defaultmutabletreenode1.add(new DefaultMutableTreeNode("soccer"));

defaultmutabletreenode1.add(new DefaultMutableTreeNode("football"));

defaultmutabletreenode1.add(new DefaultMutableTreeNode("hockey"));

defaultmutabletreenode1 = new DefaultMutableTreeNode("food");

defaultmutabletreenode.add(defaultmutabletreenode1);

defaultmutabletreenode1.add(new DefaultMutableTreeNode("hot dogs"));

defaultmutabletreenode1.add(new DefaultMutableTreeNode("pizza"));

defaultmutabletreenode1.add(new DefaultMutableTreeNode("ravioli"));

defaultmutabletreenode1.add(new DefaultMutableTreeNode("bananas"));

return new DefaultTreeModel(defaultmutabletreenode);

所以一开始你就看到内容,不过你可以覆盖JTree的getDefaultTreeModel来让它什么内容也不添加。

JAVA中的JTree

是一个完整的程序 不知道是不是你想要的那种答案

package untitled1;

import java.awt.BorderLayout;

import java.awt.Dimension;

import javax.swing.tree.DefaultMutableTreeNode;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTree;

import java.awt.Rectangle;

import javax.swing.JTextField;

import javax.swing.JLabel;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.event.TreeSelectionEvent;

import javax.swing.event.TreeSelectionListener;

public class Frame1 extends JFrame {

JPanel contentPane;

JTree jTree1 = new JTree();

JTextField txtgname = new JTextField();

JLabel lblgname = new JLabel();

JLabel lbljname = new JLabel();

JTextField txtjname = new JTextField();

JTextField txtlname = new JTextField();

JLabel lbllname = new JLabel();

JLabel lblzname = new JLabel();

JTextField txtzname = new JTextField();

public Frame1() {

try {

setDefaultCloseOperation(EXIT_ON_CLOSE);

init();

jbInit();

} catch (Exception exception) {

exception.printStackTrace();

}

}

public void init()

{

DefaultMutableTreeNode root =new DefaultMutableTreeNode("根节点");

DefaultMutableTreeNode parent=new DefaultMutableTreeNode("书籍");

root.add(parent);

DefaultMutableTreeNode java=new DefaultMutableTreeNode("java");

DefaultMutableTreeNode complete=new DefaultMutableTreeNode("完整参考资料");

DefaultMutableTreeNode sql=new DefaultMutableTreeNode("sql");

parent.add(java);

java.add(complete);

parent.add(sql);

jTree1=new JTree(root);

}

/**

* Component initialization.

*

* @throws java.lang.Exception

*/

private void jbInit() throws Exception {

contentPane = (JPanel) getContentPane();

contentPane.setLayout(null);

setSize(new Dimension(400, 300));

setTitle("Frame Title");

jTree1.setBounds(new Rectangle(43, 38, 149, 147));

jTree1.addTreeSelectionListener(new Frame1_jTree1_treeSelectionAdapter(this));

contentPane.setToolTipText("");

txtgname.setToolTipText("");

txtgname.setBounds(new Rectangle(293, 34, 93, 21));

lblgname.setToolTipText("");

lblgname.setText("父节点名称");

lblgname.setBounds(new Rectangle(207, 29, 74, 26));

lbljname.setToolTipText("");

lbljname.setText("节点名称");

lbljname.setBounds(new Rectangle(206, 73, 73, 22));

txtjname.setToolTipText("");

txtjname.setBounds(new Rectangle(293, 72, 93, 23));

txtlname.setToolTipText("");

txtlname.setBounds(new Rectangle(294, 123, 91, 23));

lbllname.setText("节点类型");

lbllname.setBounds(new Rectangle(206, 121, 80, 24));

lblzname.setToolTipText("");

lblzname.setText("子节点数");

lblzname.setBounds(new Rectangle(203, 163, 78, 24));

txtzname.setBounds(new Rectangle(293, 163, 92, 24));

contentPane.add(jTree1);

contentPane.add(lblgname);

contentPane.add(txtgname);

contentPane.add(lbljname);

contentPane.add(txtjname);

contentPane.add(txtlname);

contentPane.add(lbllname);

contentPane.add(lblzname);

contentPane.add(txtzname);

}

public void jTree1_valueChanged(TreeSelectionEvent e) {

DefaultMutableTreeNode node=(DefaultMutableTreeNode)jTree1.getLastSelectedPathComponent();

String name="";

Object nodeInfo=node.getUserObject();

if(node.isRoot())

{

txtgname.setText("");

txtjname.setText(nodeInfo.toString());

txtlname.setText("根节点");

txtzname.setText(""+node.getChildCount());

}

else{

name= node.getParent().toString();

txtgname.setText(name);

txtjname.setText(nodeInfo.toString());

if(node.isLeaf())

{

txtlname.setText("叶节点");

}

else{

txtlname.setText("枝节点");

}

txtzname.setText(""+node.getChildCount());

}

}

}

class Frame1_jTree1_treeSelectionAdapter implements TreeSelectionListener {

private Frame1 adaptee;

Frame1_jTree1_treeSelectionAdapter(Frame1 adaptee) {

this.adaptee = adaptee;

}

public void valueChanged(TreeSelectionEvent e) {

adaptee.jTree1_valueChanged(e);

}

}

Java JTree 布局

第一个是改变一下显示风格。

第二个,应该是你使用了布局。换成null的即可控制。

标记一下,晚上给出代码。

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可以简单地像下面这样表示:

import javax.swing.JFrame;

import javax.swing.JTree;

import javax.swing.event.TreeSelectionEvent;

import javax.swing.event.TreeSelectionListener;

import javax.swing.tree.DefaultMutableTreeNode;

 

public class TreeDemo {

    public static void main(String[] args) {

 

        // 创建没有父节点和子节点、但允许有子节点的树节点,并使用指定的用户对象对它进行初始化。

        // public DefaultMutableTreeNode(Object userObject)

        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("软件部");

        node1.add(new DefaultMutableTreeNode(new User("小花")));

        node1.add(new DefaultMutableTreeNode(new User("小虎")));

        node1.add(new DefaultMutableTreeNode(new User("小龙")));

 

        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("销售部");

        node2.add(new DefaultMutableTreeNode(new User("小叶")));

        node2.add(new DefaultMutableTreeNode(new User("小雯")));

        node2.add(new DefaultMutableTreeNode(new User("小夏")));

 

        DefaultMutableTreeNode top = new DefaultMutableTreeNode("职员管理");

 

        top.add(new DefaultMutableTreeNode(new User("总经理")));

        top.add(node1);

        top.add(node2);

        final JTree tree = new JTree(top);

        JFrame f = new JFrame("JTreeDemo");

        f.add(tree);

        f.setSize(300, 300);

        f.setVisible(true);

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 添加选择事件

        tree.addTreeSelectionListener(new TreeSelectionListener() {

 

            @Override

            public void valueChanged(TreeSelectionEvent e) {

                DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree

                        .getLastSelectedPathComponent();

 

                if (node == null)

                    return;

 

                Object object = node.getUserObject();

                if (node.isLeaf()) {

                    User user = (User) object;

                    System.out.println("你选择了:" + user.toString());

                }

 

            }

        });

    }

}

 

class User {

    private String name;

 

    public User(String n) {

        name = n;

    }

 

    // 重点在toString,节点的显示文本就是toString

    public String toString() {

        return name;

    }

}

关于javajtree大小和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。