
我给你写了一个例子 你看看吧 你看了就明白了
package tree;
import javaawtComponent;
import javaawtDimension;
import javaawtEvent;
import javaawtToolkit;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaawteventMouseAdapter;
import javaawteventMouseEvent;
import javabeansbeancontextBeanContext;
import javaxswingJFrame;
import javaxswingJLabel;
import javaxswingJMenuItem;
import javaxswingJPopupMenu;
import javaxswingJScrollPane;
import javaxswingJTextField;
import javaxswingJTree;
import javaxswingeventTreeSelectionEvent;
import javaxswingeventTreeSelectionListener;
import javaxswingtableDefaultTableModel;
import javaxswingtreeDefaultMutableTreeNode;
import javaxswingtreeDefaultTreeModel;
import comsunxmlinternalmessagingsaajpackagingmimeutilBEncoderStream;
public class MainFrame extends JFrame {
public static void main(String args[]) {
try {
MainFrame frame = new MainFrame();
Dimension frameSize = framegetSize();
Dimension screenSize = ToolkitgetDefaultToolkit()getScreenSize();
if(frameSizewidth>screenSizewidth){
frameSizewidth=screenSizewidth;
}
if(frameSizeheight>screenSizeheight){
frameSizeheight=screenSizeheight;
}
framesetLocation((screenSizewidth-frameSizewidth)/2, (screenSizeheight-frameSizeheight)/2);
framesetVisible(true);
} catch (Exception e) {
eprintStackTrace();
}
}
private JTree tree;
private DefaultMutableTreeNode root = new DefaultMutableTreeNode("语言");
private DefaultMutableTreeNode menu_accp = new DefaultMutableTreeNode("英语");
private DefaultMutableTreeNode menu_benet = new DefaultMutableTreeNode("法语");
private DefaultMutableTreeNode menu_accp_s1 = new DefaultMutableTreeNode("4级");
private DefaultMutableTreeNode menu_accp_s2 = new DefaultMutableTreeNode("6级");
private DefaultMutableTreeNode menu_accp_y2 = new DefaultMutableTreeNode("8级");
private JTextField txtParent;
private JTextField txtNode;
private JTextField txtType;
private JTextField txtChild;
private JPopupMenu popupMenu;
/
Create the frame
/
public MainFrame() {
super();
getContentPane()setLayout(null);
setBounds(100, 100, 535, 375);
setDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
final JScrollPane scrollPane = new JScrollPane();
scrollPanesetBounds(24, 10, 173, 317);
getContentPane()add(scrollPane);
tree = new JTree(root);
treeaddMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if(egetModifiers()==EventMETA_MASK){
addPopup(getContentPane(), popupMenu);
popupMenushow(getContentPane(),egetX()+30,egetY()+40);
}
}
});
treeaddTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) treegetLastSelectedPathComponent();
Object nodeInfo = nodegetUserObject();
if(nodeisRoot()){
txtParentsetText("");
txtNodesetText(nodeInfotoString());
txtTypesetText("根节点");
txtChildsetText(nodegetChildCount() + "");
}else{
txtParentsetText(nodegetParent()toString());
txtNodesetText(nodeInfotoString());
if(nodeisLeaf()){
txtTypesetText("叶节点");
}else{
txtTypesetText("枝节点");
}
txtChildsetText(nodegetChildCount() + "");
}
}
});
scrollPanesetViewportView(tree);
txtParent = new JTextField();
txtParentsetBounds(339, 49, 90, 21);
getContentPane()add(txtParent);
txtNode = new JTextField();
txtNodesetBounds(339, 107, 90, 21);
getContentPane()add(txtNode);
txtType = new JTextField();
txtTypesetBounds(339, 167, 90, 21);
getContentPane()add(txtType);
txtChild = new JTextField();
txtChildsetBounds(339, 231, 90, 21);
getContentPane()add(txtChild);
final JLabel label = new JLabel();
labelsetText("父类型节点");
labelsetBounds(225, 49, 90, 15);
getContentPane()add(label);
final JLabel label_1 = new JLabel();
label_1setText("节点的名称");
label_1setBounds(225, 107, 90, 15);
getContentPane()add(label_1);
final JLabel label_2 = new JLabel();
label_2setText("节点的类型");
label_2setBounds(225, 167, 90, 15);
getContentPane()add(label_2);
final JLabel label_3 = new JLabel();
label_3setText("子节点的个数");
label_3setBounds(225, 231, 90, 15);
getContentPane()add(label_3);
popupMenu = new JPopupMenu();
final JMenuItem menuItem = new JMenuItem();
menuItemaddActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) treegetLastSelectedPathComponent();
DefaultTreeModel model = (DefaultTreeModel) treegetModel();
modelremoveNodeFromParent(node);
}
});
menuItemsetText("删除");
popupMenuadd(menuItem);
//
}
private static void addPopup(Component component, final JPopupMenu popup) {
componentaddMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (eisPopupTrigger())
showMenu(e);
}
public void mouseReleased(MouseEvent e) {
if (eisPopupTrigger())
showMenu(e);
}
private void showMenu(MouseEvent e) {
popupshow(egetComponent(), egetX(), egetY());
}
});
}
}
我写过一个类似效果的阅读器, 用于记录笔记,或者阅读小说; 使用的组件是JTree ;
JTree添加一个选择事件的响应器,然后根据事件获取到当前选择的树节点, 然后读取对应的文字或者; 关键代码如下:
jtaddTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
//写入你的逻辑代码
}
}
我的阅读器效果如下图(使用的是swing + BeautyEye的皮肤)
使用getLastSelectedPathComponent()方法,像下面这样:
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) treegetLastSelectedPathComponent();
从根节点遍历查找,获取userObject来进行比较,一致时则设置选中该节点,需注意的是:
1树节点名称是可以重名的
2userObject对象并不一定是String对象
以上就是关于在java中如何响应单击JTree树中一个节点全部的内容,包括:在java中如何响应单击JTree树中一个节点、JAVA swing界面编程,怎么实现点击左边的树节点,然后在右边刷新界面,显示相关界面数据、swing JTree 怎样返回当前选择的 节点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)