自定义一个CellRender,实现TableCellRenderer接口,在
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
这个方法里面修改。
试试可以不?
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
这个方法里面修改。
试试可以不?
解决方案 »
- java菜鸟
- Java程序与SQLserver2005连接不上.(内有详细说明)高人指点..
- 受保护的变量与友好变量的区别是什么??????、
- Toolkit的方法createImage(String filename)参数filename到底如何设置
- 哪位帮我写一段线程代码,第一次接触java线程,一直搞不定,在线等
- AJAX乱码有什么好的解决方案
- 问问
- 高分请教:如何在java的application中调用C的动态链结库???紧急
- JBuilder中的tomcat需要配置吗?它好像只支持JSP/SERVLET的功能啊?该怎么配置啊?
- 怎样打包成war文件,用什么工具可以?
- 花钱培训java值不值得
- 如何把用,分割的整数的字符串转换整型数组?
TableColumnModel tcm=table.getColumnModel();
TableColumn tc=tcm.getColumn("gender");//这一列就是复选框列
tc.setCellRenderer(new MyCellRender());
//...........................
//MyCellRender.java:
import java.awt.Component;
import javax.swing.JCheckBox;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class MyCellRender extends JCheckBox implements TableCellRenderer{
public MyCellRender(){
super();
this.setSelected(false);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if(row==table.getRowCount()-1){
return null;
}
return this;
}
}
at javax.swing.JTable$BooleanRenderer.getTableCellRendererComponent(JTable.java:5406)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
@Override
public Class<?> getColumnClass(int columnIndex) { return getValueAt(0, columnIndex).getClass();
}住了没有exception,但是问题又来了,复选框是显示出来了,最后一行也没了,但是怎么也选不中,而且双击下会变成字符串true,
TableColumn tc=tcm.getColumn("gender");//这一列就是复选框列
tc.setCellRenderer(new MyCellRender());tc.setCellEditor(new DefaultCellEditor(new JCheckBox()));
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if(row==table.getRowCount()-1){
return null;
}
boolean isChecked=(((Boolean)value).booleanValue());
setSelected(isChecked);
return this;
}