JTable的两个问题???

时间:2022-08-27 22:03:57
1: 
JTable  implemensts  ListSelectionListener, 
void  valueChanged(ListSelectionEvent e)   
我想实现before  valueChanged这样的事件,又如何处理? 


2: 
如何让JTable不能移动COLUMN???? 就是不能用鼠标拖动COLUMN.

12 个解决方案

#1


呜~~~~~~
没人搞JAVA SWING的吗?
这问题已经困扰我好久了!

#2


JTable里面有个属性,可以设置以下,COLUMN就不可以移动

#3


帮你顶!

#4



    解释一下你的第一个问题,我没明白你说的before valuechange是什么意思?

    2:jTable.getTableHeader( ).setReorderingAllowed( false );就可以让你的table列不能拖动了,如果你也不想改变列的长度,就把他的长度也设定为固定值。

#5


好象没有这样的事件,不过你应该可以通过继承tableModel来实现,每次修改model的值以前进行捕获,可以否?

#6


ouyangdong(萧十八郎) :

谢谢你的回答,我解释一下第一个问题的意思:
JTable.getSelectionModel().addListSelectionListener(new ListSelectionListener()
public void valueChanged(ListSelectionEvent e)
它只有valueChanged事件,但我不想它在Changed后才开始执行我的代码,
我希望它在没滚动前就执行我的代码,也就是我说的Befort valueChange
用过DELPHI吗?就象它的Table控件,它就有BeforeScroll事件.

#7


tainy_zhang(tainy_zhang) :
跟tableModel有关系吗?
,它只是JTABLE的滚动事件,没改变MODEL.
请你说清楚点,谢谢.

#8


哦,在valueChanged方法中,只有你改变了选择的行,而选择另一行时蔡响应。比如,开始你选择行A,然后当你选择行B后,这个事件响应,这时候table中被选定的是B,你得不到A的信息,你的意思是党你要选择B的时候就响应事件,而且能够得到A的信息.如果是这样,你可以使用鼠标的事件。

  我没用过Delphi,不知道他的beforescroll到底有什么特殊性。

#9


ouyangdong(萧十八郎) :

谢谢你的回答,
但鼠标事件有它的特殊性,那就是必须用鼠标,但jtable 的 selection事件是不光是鼠标的,它更注重的是改变,而不是方式,不管你用键盘还是鼠标它都会监听到.
所以除非我把它滚动的所有方式都监听,但那样不太好,因为这样毕竟会有想得不够全面的时候的.
所以还是不太明白怎么去弄,可能要不同问题不同分析了,用其他方法实现.

可能是我用得不好,JAVA SWING 有时在事件处理上有些会用得不太顺手.
其实我也没怎么用过DELPHI,呵.

#10


哦。那你就告诉我你要实现的功能吧,发生什么变化纪录什么信心,需要那些信息?

#11


因为我要在它滚动前知道是否要保存没滚动前的信息,一但滚动了,信息就没了!
所以我想不让它滚动!但要把信息每时每刻都存储起来供保存这种方式是不可行的.

我换了种方式去实现了!虽然效果一般,但还可用,用户也接受.

#12


哦,我明白,我想想有什么直接的方法没有。

#1


呜~~~~~~
没人搞JAVA SWING的吗?
这问题已经困扰我好久了!

#2


JTable里面有个属性,可以设置以下,COLUMN就不可以移动

#3


帮你顶!

#4



    解释一下你的第一个问题,我没明白你说的before valuechange是什么意思?

    2:jTable.getTableHeader( ).setReorderingAllowed( false );就可以让你的table列不能拖动了,如果你也不想改变列的长度,就把他的长度也设定为固定值。

#5


好象没有这样的事件,不过你应该可以通过继承tableModel来实现,每次修改model的值以前进行捕获,可以否?

#6


ouyangdong(萧十八郎) :

谢谢你的回答,我解释一下第一个问题的意思:
JTable.getSelectionModel().addListSelectionListener(new ListSelectionListener()
public void valueChanged(ListSelectionEvent e)
它只有valueChanged事件,但我不想它在Changed后才开始执行我的代码,
我希望它在没滚动前就执行我的代码,也就是我说的Befort valueChange
用过DELPHI吗?就象它的Table控件,它就有BeforeScroll事件.

#7


tainy_zhang(tainy_zhang) :
跟tableModel有关系吗?
,它只是JTABLE的滚动事件,没改变MODEL.
请你说清楚点,谢谢.

#8


哦,在valueChanged方法中,只有你改变了选择的行,而选择另一行时蔡响应。比如,开始你选择行A,然后当你选择行B后,这个事件响应,这时候table中被选定的是B,你得不到A的信息,你的意思是党你要选择B的时候就响应事件,而且能够得到A的信息.如果是这样,你可以使用鼠标的事件。

  我没用过Delphi,不知道他的beforescroll到底有什么特殊性。

#9


ouyangdong(萧十八郎) :

谢谢你的回答,
但鼠标事件有它的特殊性,那就是必须用鼠标,但jtable 的 selection事件是不光是鼠标的,它更注重的是改变,而不是方式,不管你用键盘还是鼠标它都会监听到.
所以除非我把它滚动的所有方式都监听,但那样不太好,因为这样毕竟会有想得不够全面的时候的.
所以还是不太明白怎么去弄,可能要不同问题不同分析了,用其他方法实现.

可能是我用得不好,JAVA SWING 有时在事件处理上有些会用得不太顺手.
其实我也没怎么用过DELPHI,呵.

#10


哦。那你就告诉我你要实现的功能吧,发生什么变化纪录什么信心,需要那些信息?

#11


因为我要在它滚动前知道是否要保存没滚动前的信息,一但滚动了,信息就没了!
所以我想不让它滚动!但要把信息每时每刻都存储起来供保存这种方式是不可行的.

我换了种方式去实现了!虽然效果一般,但还可用,用户也接受.

#12


哦,我明白,我想想有什么直接的方法没有。