我要实现一个模糊搜索功能,即输入几个字母,相关的搜索的图片就会显示到JTable 的最前面,并且得JTable的每个Cell中含有图片和文字。我想让搜索的结果水平排列,这样就需要使 jtable的列水平放置,因为我用到了DefaultTableCellRenderer。用DefaultTableCellRenderer往JTable中添加Cell的话,必须按列添加,而不能按照行或Cell添加。
e.g : table.getColumnModel.getColumn(0).setCellRenderer(new MyCellRenderer());所以我的思想是如何使jtable的列水平放置,来实现我的目的呢?请高手帮忙!

解决方案 »

  1.   

    static class Table_Model extends AbstractTableModel {     private static final long serialVersionUID = -7495940408592595397L;     private Vector content = null;     private String[] title_name = { "Date", "CostName", "Cost", "Re" };     public Table_Model() {
            content = new Vector();
        }     public Table_Model(int count) {
            content = new Vector(count);
        }     public void addRow(String date, String costname, String cost,String re) {
            Vector v = new Vector(4);
            v.add(0, date);
            v.add(1, costname);
            v.add(2, cost);
            v.add(3, re);
            content.add(v);
        }     public void removeRow(int row) {
            content.remove(row);
        }     public void removeRows(int row, int count) {
            for (int i = 0; i < count; i++) {
                if (content.size() > row) {
                    content.remove(row);
                }
            }
        }     /**
        */
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            if (columnIndex == 0) {
                return false;
            }
            return true;
        }     /**
        */
        public void setValueAt(Object value, int row, int col) {
            ((Vector) content.get(row)).remove(col);
            ((Vector) content.get(row)).add(col, value);
            this.fireTableCellUpdated(row, col);
        }     public String getColumnName(int col) {
            return title_name[col];
        }     public int getColumnCount() {
            return title_name.length;
        }     public int getRowCount() {
            return content.size();
        }
                
        public String getValueAt(int row, int col) {
            return (String) ((Vector) content.get(row)).get(col);
        }
    }
       
    public static void addRowData(String date, String costname, String cost,String re){
    model.addRow(date, costname, cost,re);
            table.updateUI();
    }
    public static void addBlankRows(){
    for(int i=0;i<100;i++){
    model.addRow("", "", "", "");
    table.updateUI();
    }
    }

    public static void clear(){
    if(model.getRowCount() >= 1){
       model.removeRows(0, model.getRowCount());
    }
    }

    public static void DelRow (){
    int[] index = table.getSelectedRows();
    for(int i=0;i<index.length;i++){
    model.removeRow(index[i]);
    table.updateUI();
    }

    }这个model是横向显示的,你试试