import   javax.swing.*;   import   java.util.*;   
import   javax.swing.table.*;   
import   java.applet.*;   
import   java.awt.*;   
import   java.awt.event.*;   import   javax.swing.event.*;   
import   java.lang.String;   
  
public   class   no2   extends   JApplet   
{   
        Vector   srcdata   =   new   Vector();    
        Vector   rowdata   =   new   Vector();   
        Vector   cname   =   new   Vector(4);   
        JTable   jt   =   new   JTable();   
        DefaultTableModel  model   =   new DefaultTableModel(srcdata,cname);   
        JScrollPane   js   =   new   JScrollPane();   //创建滚动窗   
  
  
        public   void   init()   
        {   
                setSize(500,300);
                Container   c   =   this.getContentPane();   
                  JPanel   jp2   =   new   JPanel();   //装载表格的面板  
                rowdata.add("njnS");   
                rowdata.add("");   
                rowdata.add(""); 
                JCheckBox checkBox = new JCheckBox(); //-----------------问题的地方
                
                rowdata.add(checkBox);   
                cname.add(columnName[0]);   
                cname.add(columnName[1]);   
                cname.add(columnName[2]);   
                cname.add(columnName[3]);   
                srcdata.add(rowdata);   
                jt.setModel(model);   
                jt.setCellSelectionEnabled(true);   //是能否选中一个cell,也就是一行和一列的交叉单元格   
                  jt.setColumnSelectionAllowed(true);  
                js.add(jt); 
                c.add(js);
          }
}//我想在jtable里添加checkbox 看到了吧,可是添加进去显示出来的却是一行文字:javax.swing.JCheckBox[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@1982fc1,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=2,bottom=2,right=2],paintBorder=false,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=]//怎么办?

解决方案 »

  1.   

    http://topic.csdn.net/u/20090319/15/21f41826-e960-49eb-bc6d-a283c8be1e78.html
    這里面 有幾個小程序段   你可以看看 ~  應該差不多
      

  2.   

    可以使用JTable的public void setDefaultRenderer(Class<?> columnClass,TableCellRenderer renderer)
    要你自己实现一个TableCellRenderer ,那个columnClass就是你checkbox的class
    这就要牵扯到了swing的Renderer机制了,初次理解可能有点困难,可以先学着使用JList来显示自定义数据。
    同样也是给JList设置一个自定义的CellRenderer。
      

  3.   

    我还没用过JTable,是来接分的
      

  4.   


        JTable table = new JTable();
        TableColumn col = table.getColumn(columnName);
        col.setCellEditor(new DefaultCellEditor(new JCheckBox()));
        col.setCellRenderer(new MyCheckBoxRenderer());
       //下面是个Renderer类
      public class MyCheckBoxRenderer
        extends JCheckBox
        implements TableCellRenderer {  public MyCheckBoxRenderer() {}  public Component getTableCellRendererComponent(JTable table, Object value,
     boolean isSelected,
     boolean hasFocus,
     int row, int column) {
        if (isSelected) {
          setForeground(table.getSelectionForeground());
          setBackground(table.getSelectionBackground());
        }
        else {
          setForeground(table.getForeground());
          setBackground(table.getBackground());
        }
        if (value == null || !(value instanceof Boolean)) {
          value = new Boolean(false);
        }
        setSelected( ( (Boolean) value).booleanValue());
        return this;
      }
    }
      

  5.   

    有了 renderer 在加个editor 否则编辑还是textfild编辑
      

  6.   

    对,要自己设置渲染器(renderer)和编辑器(editor)
      

  7.   

    up,也不是很明白,对于渲染器(renderer)和编辑器(editor)没怎么用过,以后会去试试
      

  8.   


    tabImgRes = new JTable() {
    public TableCellEditor getCellEditor(int row, int column) {
    switch (column) {
    case ImgResTableModel.COL_VALUE:
    return null;
    case ImgResTableModel.COL_PARAM:
    switch (row) {
    case XStyle.IMAGE_ARROW:
    case XStyle.IMAGE_CURSOR:
    return new DefaultCellEditor(cboxDirect);
    case XStyle.IMAGE_BG:
    return new DefaultCellEditor(cboxPollType);
    }
    break;
    }
    return super.getCellEditor(row, column);
    }
    };
    随手摘了一小段以前写的代码,大概就是这么个意思,楼主看一下CellRender和CellEditor相关的文档就知道了。
      

  9.   

    col.setCellEditor(new DefaultCellEditor(new JCheckBox()));我不是已经设置editor了吗?
      

  10.   

    Swing中JTable要内容要设成checkbox很简单,只要将tablemodel的列属性设成boolean就行了。这是JTable默认的。