***java高手请进,能不能自己来控制事件响应?*** java的事件模型有一个加入监听的步骤,如果你自己想发送事件到所有监听者,你需要作许多事情,需要了解事件的类型、源。 而且不同的事件不兼容。 总之,很麻烦! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TreeSelectionListener事件中需处理的事情做成一个方法,dragOver事件中直接调用这个方法不行吗?hoho~ 但是要想画树的话,只能是让系统触发DefaultTreeCellRenderer吧,你调用DefaultTreeCellRenderer中的getTreeCellRendererComponent获得JLabel,只能获得那个节点,并不能重绘这个节点的。下面是我的程序:(this是属对象)DefaultTreeCellRenderer render = (DefaultTreeCellRenderer)this.getCellRenderer();JLabel node1=(JLabel)render.getTreeCellRendererComponent(this,node.toString(),true,true,false,node.getLevel(),false);System.out.println(node1.getText());System.out.println(node1.getIcon().toString());this.repaint();//this.validate();节点的值通过log判断是正确的,但是通过this.repaint等并不能重画,很简单,因为没有加到树上。 有两种重绘树节点的方法.一种是继承DefaultTreeCellRenderer,在getTreeCellRendererComponent方法中判断某条件根据不同情况用不同的图片来显示树节点.第二种方法是直接实现TreeCellRenderer接口.DefaultTreeCellRenderer是继承JLabel并实现TreeCellRenderer接口,所以DefaultTreeCellRenderer显示的实际是一个JLabel,你可以让你的TreeCellRenderer继承任何其它Component的某个子类并实现TreeCellRenderer接口,这时树中的节点形状将会是你的那个Component的子类的形状.你是不是把问题想的复杂化了,鼠标拖动无非就是按下->移动->松开的一个过程,这三个过程都会触发相应的事件,你只要在这些事件中进行处理就行了.例如拖动树节点:鼠标按下,得到选择的树节点;拖动,修改鼠标形状;鼠标松开,得到拖动到的目标位置,然后进行处理:从树中切除鼠标按下时选择的树节点,在鼠标松开的树节点下加入这个树节点,刷新树,OK! 关于access数据库导入到SQL SERVER2005的问题 mysql 两表之间的查询 各位大侠帮帮忙 接收不到keyEvent事件 请教 Image转为BufferedImage后,得到全黑的图片 一个关于tableColumn(SWT)的问题 一个看简单的,但比较棘手的问题,请大家帮忙,谢谢! 为什么我用java执行bat文件时路径会自动改变而报错呢? 菜鸟问题:如何得到开发帮助? JAVA程序可不可以编译连接成类似于.exe这样的文件,双击它就能执行? IO输入的一些问题 疑问:关于线程,如果有过个变量和方法,是需要共享的。。。。。。
dragOver事件中直接调用这个方法不行吗?hoho~
你调用DefaultTreeCellRenderer中的getTreeCellRendererComponent获得JLabel,只能获得那个节点,并不能重绘这个节点的。下面是我的程序:(this是属对象)
DefaultTreeCellRenderer render = (DefaultTreeCellRenderer)this.getCellRenderer();
JLabel node1=(JLabel)render.getTreeCellRendererComponent(this,node.toString(),true,true,false,node.getLevel(),false);
System.out.println(node1.getText());
System.out.println(node1.getIcon().toString());
this.repaint();
//this.validate();
节点的值通过log判断是正确的,但是通过this.repaint等并不能重画,很简单,因为没有加到树上。
一种是继承DefaultTreeCellRenderer,在getTreeCellRendererComponent方法中判断某条件根据不同情况用不同的图片来显示树节点.
第二种方法是直接实现TreeCellRenderer接口.DefaultTreeCellRenderer是继承JLabel并实现TreeCellRenderer接口,所以DefaultTreeCellRenderer显示的实际是一个JLabel,你可以让你的TreeCellRenderer继承任何其它Component的某个子类并实现TreeCellRenderer接口,这时树中的节点形状将会是你的那个Component的子类的形状.你是不是把问题想的复杂化了,鼠标拖动无非就是按下->移动->松开的一个过程,这三个过程都会触发相应的事件,你只要在这些事件中进行处理就行了.
例如拖动树节点:鼠标按下,得到选择的树节点;拖动,修改鼠标形状;鼠标松开,得到拖动到的目标位置,然后进行处理:从树中切除鼠标按下时选择的树节点,在鼠标松开的树节点下加入这个树节点,刷新树,OK!