JTree节点名字修改? 在一个大的JPanel里面,左边放的JTree,右边又放一块JPanel。左边JTree所有的节点名字在右边的Jpanel都显示出来。当我修改JTree节点的名字时。右边的JPanel上面的名字也要跟着相应的刷新更改。怎么实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 监听鼠标事件,点击修改事件发生后,getSource()在右边的Jpanel中显示出来 你右边的Jpanel 内容都是从左边JTree里 调出来的吧,那当你点击JTree的事件时,修改他的内容,右边的Jpanel自然就改变了 当我点击JTree的节点时,我怎么去判断我选择的是哪个层次的节点?DefaultMutableTreeNode node = (DefaultMutableTreeNode) treepath.getLastPathComponent(); Object object = node.getUserObject(); Object[] nodes = treepath.getPath(); if (nodes.length == 1) { } else if (nodes.length == 2) { } else if (nodes.length == 3) { } else if (nodes.length == 4) { } else if (nodes.length == 5) {}我可以这样去判断是获得是哪一个节点吗?如果是这样的话,第一次按顺序下来可以,到nodes.length==5,第5个节点的时候,我在返回去点击nodes.length的时候,返回不回去呢? import java.awt.BorderLayout;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.DatagramPacket;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;import java.util.StringTokenizer;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTree;import javax.swing.WindowConstants;import javax.swing.plaf.TreeUI;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.DefaultTreeModel;import javax.swing.tree.TreeNode;import javax.swing.tree.TreePath;import sun.misc.Resource;import java.awt.Dimension;/** * *//** * @author abei007 * */public class TreeEditFrame extends JFrame { /** * */ private static final long serialVersionUID = -8017762200230001186L; private DefaultTreeModel model; private JTree tree; static Socket socket; String name = ""; // PrintStream ps; DefaultMutableTreeNode root = null; DefaultMutableTreeNode country = new DefaultMutableTreeNode("当前在线");; // @jve:decl-index=0: private JButton jButton = null; private JButton jButton1 = null; public TreeEditFrame() { setTitle("TreeEditFrame"); setSize(275, 600); // add scroll pane with tree JScrollPane scrollPane = new JScrollPane(tree); add(scrollPane, BorderLayout.CENTER); makeButtons(); // consturct tree TreeNode root = makeSampleTree(); model = new DefaultTreeModel(root); tree = new JTree(model); tree.setEditable(true); tree.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent e) { if (e.getClickCount() == 2) { TreePath path = tree.getSelectionPath(); if (path == null) return; DefaultMutableTreeNode node = (DefaultMutableTreeNode) path .getLastPathComponent(); name = node.getUserObject().toString(); } } }); } private TreeNode makeSampleTree() { // TODO 自动生成方法存根 DefaultMutableTreeNode root = new DefaultMutableTreeNode("FeiQ 聊天"); root.add(country); country.add(new DefaultMutableTreeNode("San Diego")); country.add(new DefaultMutableTreeNode("Michigan")); return root; } private void makeButtons() { // TODO 自动生成方法存根 JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); JButton addSiblingButton = new JButton("Add Sibling"); addSiblingButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree .getLastSelectedPathComponent(); if (selectedNode == null) return; DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode .getParent(); if (parent == null) return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(); int selectedIndex = parent.getIndex(selectedNode); model.insertNodeInto(newNode, parent, selectedIndex + 1); // now display nes node TreeNode[] nodes = model.getPathToRoot(newNode); TreePath path = new TreePath(nodes); tree.scrollPathToVisible(path); } }); panel.add(addSiblingButton, BorderLayout.WEST); JButton addChildButton = new JButton("Add Child"); addChildButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree .getLastSelectedPathComponent(); if (selectedNode == null) return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode( "New"); model.insertNodeInto(newNode, selectedNode, selectedNode .getChildCount()); // now display new node TreeNode[] nodes = model.getPathToRoot(newNode); TreePath path = new TreePath(nodes); tree.scrollPathToVisible(path); } }); panel.add(addChildButton, BorderLayout.CENTER); JButton deleteButton = new JButton("Delete"); deleteButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree .getLastSelectedPathComponent(); if (selectedNode != null && selectedNode.getParent() != null) model.removeNodeFromParent(selectedNode); } }); panel.add(deleteButton, BorderLayout.EAST); panel.add(getJButton(), BorderLayout.NORTH); panel.add(getJButton1(), BorderLayout.SOUTH); add(panel, BorderLayout.SOUTH); } /** * This method initializes jButton * * @return javax.swing.JButton */ private JButton getJButton() { if (jButton == null) { jButton = new JButton(); jButton.setText("刷新"); jButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { System.out.println("actionPerformed()"); // TODO // Auto-generated // Event stub // actionPerformed() ClientListener t; try { country.removeAllChildren(); socket = new Socket("211.87.232.105", 7000); t = new ClientListener(socket); StringBuffer msg = new StringBuffer("CONNECT:"); String name = "111"; String ip = InetAddress.getLocalHost().toString(); msg.append(name + ":" + ip); System.out.println(msg); /* ps = new PrintStream(socket.getOutputStream()); */ t.ps.println(msg); t.ps.flush(); System.out.println("222222222222222222222222"); String tmp = t.getmessage(); // /////////////////////////////// StringTokenizer st = new StringTokenizer(tmp, ":"); String keyword = st.nextToken(); // 服务器端传来各种信息的处理 if (keyword.equals("PEOPLE")) { while (st.hasMoreTokens()) { String user = st.nextToken(); System.out.println(user); DefaultMutableTreeNode tp = new DefaultMutableTreeNode( user); country.add(tp); tree.updateUI(); } } // ////////////////////////////// } catch (UnknownHostException e1) { // TODO 自动生成 catch 块 e1.printStackTrace(); } catch (IOException e1) { // TODO 自动生成 catch 块 e1.printStackTrace(); } // ClientListener(socket).start(); } }); } return jButton; } /** * This method initializes jButton1 * * @return javax.swing.JButton */ private JButton getJButton1() { if (jButton1 == null) { jButton1 = new JButton(); jButton1.setText("群发"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { String message = JOptionPane.showInputDialog( TreeEditFrame.this, "请输入群发信息", "信使群发", JOptionPane.INFORMATION_MESSAGE); if (message != null && !message.equals("")) { TreePath[] selectionPaths = tree.getSelectionPaths(); System.out.println(selectionPaths); // Resource.sendGroupMessenger(selectionPaths, message); } else if (message != null && message.isEmpty()) { JOptionPane.showMessageDialog(TreeEditFrame.this, "不能发送空信息!"); } } }); } return jButton1; } public static void main(String[] args) { // TODO 自动生成方法存根 JFrame frame = new TreeEditFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } /* * private static Thread ClientListener(Socket socket2) { // TODO 自动生成方法存根 * return null; } */ class ClientListener { Socket socket; BufferedReader br; PrintStream ps; String message; public ClientListener(Socket s) { try { socket = s; br = new BufferedReader(new InputStreamReader(socket .getInputStream())); ps = new PrintStream(socket.getOutputStream()); } catch (IOException ex) { } } public String getmessage() { try { message = br.readLine(); System.out.println(message); } catch (IOException ex) { } return message; } } public void closeSocket() { if (socket != null) { try { socket.close(); } catch (IOException ex) { // ta.append("Error: " + ex + "\n"); } } } // /////////////////////////////////////////////////////////////////////////////////////////////////////////} Quartz作业调度中Job初始化的问题 【怎么样访问Jar包中的文件?】【新手问题,大家多多帮忙呀】 怎么样把中文转成%4e9a%%9a6c%%900a%这样的格式存储 关于改变integer的值,高手飘过吧~~ socket问题 关于java传引用的一个疑惑,各位大侠请帮个忙! 请帮我参考这段代码那里有错??? 关于2003年06月的《程序员》中的java设计模式 为什么sun网站的jdk1.4.01下载不下来了? 急!急!急!一道难题! 大家 看下这个小线程程序有引起死锁的潜在可能吗?? 多个子串出现,位置不定的正则怎么写?
DefaultMutableTreeNode node = (DefaultMutableTreeNode) treepath.getLastPathComponent();
Object object = node.getUserObject();
Object[] nodes = treepath.getPath();
if (nodes.length == 1) {
} else if (nodes.length == 2) {
}
else if (nodes.length == 3) {
} else if (nodes.length == 4) {
} else if (nodes.length == 5) {}我可以这样去判断是获得是哪一个节点吗?
如果是这样的话,第一次按顺序下来可以,到nodes.length==5,
第5个节点的时候,我在返回去点击nodes.length的时候,返回不回去呢?
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.StringTokenizer;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.WindowConstants;
import javax.swing.plaf.TreeUI;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import sun.misc.Resource;import java.awt.Dimension;/**
*
*//**
* @author abei007
*
*/
public class TreeEditFrame extends JFrame { /**
*
*/
private static final long serialVersionUID = -8017762200230001186L; private DefaultTreeModel model; private JTree tree; static Socket socket; String name = ""; // PrintStream ps;
DefaultMutableTreeNode root = null; DefaultMutableTreeNode country = new DefaultMutableTreeNode("当前在线");; // @jve:decl-index=0: private JButton jButton = null; private JButton jButton1 = null; public TreeEditFrame() {
setTitle("TreeEditFrame");
setSize(275, 600); // add scroll pane with tree
JScrollPane scrollPane = new JScrollPane(tree);
add(scrollPane, BorderLayout.CENTER);
makeButtons(); // consturct tree
TreeNode root = makeSampleTree();
model = new DefaultTreeModel(root);
tree = new JTree(model);
tree.setEditable(true);
tree.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
if (e.getClickCount() == 2) {
TreePath path = tree.getSelectionPath();
if (path == null)
return;
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path
.getLastPathComponent();
name = node.getUserObject().toString();
}
}
});
} private TreeNode makeSampleTree() {
// TODO 自动生成方法存根
DefaultMutableTreeNode root = new DefaultMutableTreeNode("FeiQ 聊天"); root.add(country);
country.add(new DefaultMutableTreeNode("San Diego"));
country.add(new DefaultMutableTreeNode("Michigan"));
return root;
} private void makeButtons() {
// TODO 自动生成方法存根 JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
JButton addSiblingButton = new JButton("Add Sibling");
addSiblingButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
if (selectedNode == null)
return; DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode
.getParent();
if (parent == null)
return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(); int selectedIndex = parent.getIndex(selectedNode);
model.insertNodeInto(newNode, parent, selectedIndex + 1); // now display nes node TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path); }
});
panel.add(addSiblingButton, BorderLayout.WEST);
JButton addChildButton = new JButton("Add Child");
addChildButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
if (selectedNode == null)
return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(
"New");
model.insertNodeInto(newNode, selectedNode, selectedNode
.getChildCount()); // now display new node
TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path); }
});
panel.add(addChildButton, BorderLayout.CENTER); JButton deleteButton = new JButton("Delete");
deleteButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent(); if (selectedNode != null && selectedNode.getParent() != null)
model.removeNodeFromParent(selectedNode); }
});
panel.add(deleteButton, BorderLayout.EAST);
panel.add(getJButton(), BorderLayout.NORTH);
panel.add(getJButton1(), BorderLayout.SOUTH);
add(panel, BorderLayout.SOUTH);
} /**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setText("刷新");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("actionPerformed()"); // TODO
// Auto-generated
// Event stub
// actionPerformed()
ClientListener t;
try {
country.removeAllChildren();
socket = new Socket("211.87.232.105", 7000);
t = new ClientListener(socket);
StringBuffer msg = new StringBuffer("CONNECT:");
String name = "111";
String ip = InetAddress.getLocalHost().toString();
msg.append(name + ":" + ip);
System.out.println(msg);
/* ps = new PrintStream(socket.getOutputStream()); */
t.ps.println(msg);
t.ps.flush(); System.out.println("222222222222222222222222");
String tmp = t.getmessage();
// ///////////////////////////////
StringTokenizer st = new StringTokenizer(tmp, ":");
String keyword = st.nextToken(); // 服务器端传来各种信息的处理
if (keyword.equals("PEOPLE")) { while (st.hasMoreTokens()) { String user = st.nextToken();
System.out.println(user);
DefaultMutableTreeNode tp = new DefaultMutableTreeNode(
user);
country.add(tp);
tree.updateUI();
}
}
// //////////////////////////////
} catch (UnknownHostException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
} catch (IOException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
// ClientListener(socket).start(); }
});
}
return jButton;
} /**
* This method initializes jButton1
*
* @return javax.swing.JButton
*/
private JButton getJButton1() {
if (jButton1 == null) {
jButton1 = new JButton();
jButton1.setText("群发");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
String message = JOptionPane.showInputDialog(
TreeEditFrame.this, "请输入群发信息", "信使群发",
JOptionPane.INFORMATION_MESSAGE);
if (message != null && !message.equals("")) {
TreePath[] selectionPaths = tree.getSelectionPaths();
System.out.println(selectionPaths);
// Resource.sendGroupMessenger(selectionPaths, message);
} else if (message != null && message.isEmpty()) {
JOptionPane.showMessageDialog(TreeEditFrame.this,
"不能发送空信息!");
} }
});
}
return jButton1;
} public static void main(String[] args) {
// TODO 自动生成方法存根 JFrame frame = new TreeEditFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true); } /*
* private static Thread ClientListener(Socket socket2) { // TODO 自动生成方法存根
* return null; }
*/
class ClientListener {
Socket socket; BufferedReader br; PrintStream ps; String message; public ClientListener(Socket s) {
try {
socket = s;
br = new BufferedReader(new InputStreamReader(socket
.getInputStream())); ps = new PrintStream(socket.getOutputStream());
} catch (IOException ex) { }
} public String getmessage() { try {
message = br.readLine();
System.out.println(message); } catch (IOException ex) { }
return message;
}
} public void closeSocket() {
if (socket != null) {
try {
socket.close();
} catch (IOException ex) {
// ta.append("Error: " + ex + "\n");
}
}
} // /////////////////////////////////////////////////////////////////////////////////////////////////////////}