java insert into整形_java – JXTreeTable模型不允许使用insertNodeInto()

我在我的应用程序中使用树表模型,它扩展AbstractTreeTableModel以创建JXTreeTable.以下是我的模特.

import org.jdesktop.swingx.treetable.AbstractTreeTableModel;

import org.jdesktop.swingx.treetable.DefaultTreeTableModel;

import org.jdesktop.swingx.treetable.TreeTableModel;

import javax.swing.tree.TreeModel;

public class MyDataModel extends AbstractTreeTableModel{

static protected String[] columnNames = { "Field", "Value" };

static protected Class>[] columnTypes = { Object.class, Object.class};

public MyDataModel(MyDataNode rootNode) {

super(rootNode);

root = rootNode;

}

@Override

public Object getChild(Object parent, int index) {

return ((MyDataNode) parent).getChildren().get(index);

}

@Override

public int getChildCount(Object parent) {

return ((MyDataNode) parent).getChildren().size();

}

@Override

public int getIndexOfChild(Object parent, Object child) {

return 0;

}

@Override

public int getColumnCount() {

return columnNames.length;

}

@Override

public String getColumnName(int column) {

return columnNames[column];

}

@Override

public Class> getColumnClass(int column) {

return columnTypes[column];

}

@Override

public Object getValueAt(Object node, int column) {

MyDataNode mNode=(MyDataNode)node;

Object obj =mNode.getNodeDataObject();

if(column==0){

return mNode.getName();

}

else if (column==1){

if(obj instanceof Field){

Field field=(Field)mNode.getNodeDataObject();

if(field.getFieldDef().getListValue().size()>0){

return field.getFieldDef().getListValue();

}

else

return mNode.getDefaultValue();

}

else

return mNode.getDefaultValue();

}

return null;

}

@Override

public boolean isCellEditable(Object node, int column) {

//only allow Field values to be editable

if(((MyDataNode)node).getNodeDataObject() instanceof Field && column==1)

return true;

else

return false;

}

@Override

public boolean isLeaf(Object node) {

MyDataNode mNode=(MyDataNode)node;

Object obj=mNode.getNodeDataObject();

if(obj instanceof Field){

Field field=(Field)obj;

if(field.getFieldDef().getDataType().equalsIgnoreCase("MULTIPLE_MESSAGE")){

return false;

}

else

return true;

}

return false;

}

@Override

public void setValueAt(Object aValue, Object node, int column) {

MyDataNode mNode=(MyDataNode)node;

if (mNode.getNodeDataObject() instanceof Field && column == 1) {

Field field = (Field) mNode.getNodeDataObject();

field.setDefaultValue(aValue);

field.setSelectedValue(aValue);

}

}

}

这是我在我的应用程序中使用JXTreeTable的方式

MyDataModel treeTableModel = new MyDataModel(createDataStructure(message));

jTreeTable = new JXTreeTable(treeTableModel);

private static MyDataNode createDataStructure(Message message) {

//setting fields as children of the root

nodeList = new ArrayList<>();

for (int index=0;index

if(message.getListFields().get(index).getFieldDef()

.getDataType().equalsIgnoreCase("MULTIPLE_MESSAGE")){

nodeList.add(new MyDataNode(message.getListFields()

.get(index).getFieldDef().getfName(), "", childMessagesRoot,

message.getListFields().get(index)));

}

else{

nodeList.add(new MyDataNode(message.getListFields()

.get(index).getFieldDef().getfName(), (String)(message.getListFields().

get(index).getDefaultValue()),

null,message.getListFields().get(index)));

}

}

//setting the Message to the root of the tree

root = new MyDataNode(message.getMsgName(), "", nodeList,message);

return root;

}

当我需要向JXTreeTable添加一个新节点时,我尝试获取其模型并使用insertNodeInto()函数调用,但该模型不支持insertNodeInto()函数.

有人请告诉我代码中出错的地方.这是我第一次使用树表,因此可能会丢失一些东西.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值