我定义了一个焦点监听器,加在jtable上时,如果单击自定义的编辑器和绘制器的列,并不会触发相应的事件,这是为什么?我现在只能手动在编辑器里面的每个单选按钮的点击事件中,手动调用jtable的requestFocus才行,非常麻烦
解决方案 »
- java.lang.ClassCastException 神奇的问题!
- 请教java的基本类库,比如java.io都是放在哪个jar文件里的啊?
- java客户端与C++服务器程序的通信协议设计与编程问题
- 请各位大侠帮我看看下面的线程有没有问题?谢谢
- 庆祝wjmmml-----有了自己的专栏呀。大家看看wjmmml长的帅不帅呀?
- JCreator中第一个例子,帮我看看!来者有分!
- 对WIN98下通过AUTOEXERC.BAT设置CLASSPATH提出的疑问。
- jbuilder 5.0 到底有多大????
- awt中Window问题
- 抽象类 比 普通类 有什么优势??
- 谁了解新IO的有关知识,看得乱七八糟的,Selector等等
- 一个根据字符串生成xml树的问题!!
private String mValue;
private JPanel panel;
private ButtonGroup group;
private DefaultTableModel model;
public TCellEditor(DefaultTableModel model){
this.model=model;
}
public void cancelCellEditing() {
super.cancelCellEditing();
} public Object getCellEditorValue() {
return group.getSelection().getActionCommand();
} public boolean shouldSelectCell(EventObject anEvent) {
return true;
} public boolean stopCellEditing() {
super.stopCellEditing();
return true;
}
public boolean isCellEditable(EventObject e) {
return true;
} public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
panel=new JPanel();
group=new ButtonGroup();
final JTable t=table;
ActionListener action=new ActionListener(){ public void actionPerformed(ActionEvent e) {
t.requestFocus();
}
};
JRadioButton radio1=new JRadioButton("命令1");
JRadioButton radio2=new JRadioButton("命令2");
JRadioButton radio3=new JRadioButton("命令3");
group.add(radio1);
group.add(radio2);
group.add(radio3);
String vlu=(String)value;
TableModel model=t.getModel();
radio1.setActionCommand("1");
radio2.setActionCommand("2");
radio3.setActionCommand("3");
radio1.addActionListener(action);
radio2.addActionListener(action);
radio3.addActionListener(action);
panel.add(radio1);
panel.add(radio2);
panel.add(radio3);
radio1.setSelected("1".equals(vlu)?true:false);
radio2.setSelected("2".equals(vlu)?true:false);
radio3.setSelected("3".equals(vlu)?true:false);
return panel;
}
}
但既然单元格都获得焦点了,jtable还不获得焦点吗?如果用默认的编辑器,单元格是文本框的编辑器,那么它获得焦点,jtable也有焦点了。