java jtree怎么初始化,java – 如何设置JTree“ctrl”选择模式始终启用

我想我找到了解决方案

您将需要扩展JTree和DefaultTreeSelectionModel.

JTree相关方法:

/

/

/// Implement selection using "adding" only logic. //

/

/

@Override

public void setSelectionPath(TreePath path) {

System.out.println("MLDebugJTree: setSelectionPath(" + path + ")");

addSelectionPath(path);

return;

//super.setSelectionPath(path);

}

@Override

public void setSelectionPaths(TreePath[] paths) {

System.out.println("MLDebugJTree: setSelectionPaths(" + paths + ")");

addSelectionPaths(paths);

return;

}

@Override

public void setSelectionRow(int row) {

System.out.println("MLDebugJTree: setSelectionRow(" + row + ")");

addSelectionRow(row);

return;

//super.setSelectionRow(row);

}

@Override

public void setSelectionRows(int[] rows) {

System.out.println("MLDebugJTree: setSelectionRows(" + rows + ")");

addSelectionRows(rows);

return;

//super.setSelectionRows(rows);

}

DefaultSelectionModel相关方法:

package com.ml.tree2.model.impl;

import javax.swing.tree.DefaultTreeSelectionModel;

import javax.swing.tree.TreePath;

public class MLTreeSelectionModel extends DefaultTreeSelectionModel {

private static final long serialVersionUID = -4270031800448415780L;

@Override

public void addSelectionPath(TreePath path) {

// Don't do overriding logic here because addSelectionPaths is ultimately called.

super.addSelectionPath(path);

}

@Override

public void addSelectionPaths(TreePath[] paths) {

if(paths != null) {

for(TreePath path : paths) {

TreePath[] toAdd = new TreePath[1];

toAdd[0] = path;

if (isPathSelected(path)) {

// If path has been previously selected REMOVE THE SELECTION.

super.removeSelectionPaths(toAdd);

} else {

// Else we really want to add the selection...

super.addSelectionPaths(toAdd);

}

}

}

}

HTH.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值