作者TonyQ (骨头)
站内java
标题Re: [问题] JTable 栏位输入内容控制的问题
时间Thu Apr 13 13:30:02 2006
※ 引述《cpqq (cpqq)》之铭言:
: 对不起,我第一次在这问问题,请多包函。
: 我看了有关於要如何在一个 table 内有不同的 editor,
: 或者是想要在不同的 cell 内有不同的 ComboBox 等的文章,
: 很多人都会用 EachRowEditor 那个范例
: http://www.crionics.com/products/opensource/faq/swing_ex/JTableExamples2.html,
: (对不起,不知道怎麽缩,可以教我怎麽缩吗?)
: 我试过了,可以正常地 work!但是我一直不懂也找不到为甚麽利用那个方法可以办到......
: 首先,为甚麽把不同的 Editor 放在 HashTable 不同的 Value 内就可以让该 key row
: 显示不同的 ComboBox?
原来这一题要这样实作...
啊啊啊啊啊 我当初怎麽没想到...........(昏)
我那时候在同样的问题上卡了整整两天!!!
後来生气乾脆放弃combobox改用别的东西..-_-;
感谢你的这份文件...= =
---
回你的问题.....因为JTable是很单纯的,
你传甚麽东西给它它就吃甚麽。
也就是 它根本不管你hashtable放的是甚麽
甚至於说,它根本不理你有没有hashtable。
getTableCellRendererComponent()这东西传给它甚麽就吃甚麽。
这理这个method传过去最重要的一行在这里
renderer = (TableCellRenderer)renderers.get(new Integer(row));
简单来说
用hashtable只是为了把各个row的cell设定存起来而已
然後Jtable在跟他要东西的时候 就照row回给它
如果不用hashtable去存各个项目
而只是进来一个就改变renders的话
就会变成所有的row都用同一个renderers .....
就会变成每个combobox的内容都一样 (我之前的问题就是这个) XD
---
至於第二个问题
你去看这个class在哪里被引用的 再查查API就知道啦
像这行
table.getColumn("Column2").setCellEditor(rowEditor);
再对照
http://0rz.net/b11ek
就可以知道rowEditor为甚麽只implements TableCellEditor
--
local
jtable的设定真的很麻烦.....
--
String temp="relax"; | Life just like programing
while(buringlife) String.forgot(temp); | to be right or wrong
while(sleeping) brain.setMemoryOut(); | need not to say
stack.push(life.running); | the complier will
stack.push(scouting.buck()); | answer your life
stack.push(bowling.pratice()); | Bone
everything
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.138.240.57
※ 编辑: TonyQ 来自: 140.138.240.57 (04/13 13:31)
※ 编辑: TonyQ 来自: 140.138.240.57 (04/13 13:36)