请问宽度设为零怎么设?我用了下面的语句不管用啊。private String[] columnNames={"序号","日期","计划"};
private MyTableModel tm=new DefaultTableModel(columnNames,0);
private DefaultListSelectionModel sm=new DefaultListSelectionModel();dataTable.setModel(tm);
dataTable.setSelectionModel(sm);
dataTable.getColumn(columnNames[0]).setWidth(0);   //这一行就是设置宽度为零,对吗?

解决方案 »

  1.   

    第一种方法:
    dataTable.getColumnModel().getColumn(0).setMaxWidth(0);
    dataTable.getColumnModel().getColumn(0).setMinWidth(0);
    dataTable.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(0);
    dataTable.getTableHeader().getColumnModel().getColumn(0).setMinWidth(0);第二种方法:
      显示名称数组中不添加ID名称,但数据数组有ID数据。如以下代码:
      import javax.swing.*;
    import javax.swing.table.*;
    import javax.swing.event.*;import java.awt.event.*;
    import java.awt.event.*;
    import java.awt.*;public class TableHideColumn
    implements ListSelectionListener {
    JTable tableView;
    public TableHideColumn() {
    JFrame frame = new JFrame("Table");
    frame.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    }
    }); // We specify only 2 column names, the last one is hidden
    final String[] names = {
    "First Name", "Last Name"};
    final Object[][] data = {
    {
    "Mark", "Andrews", new Integer(1)}, {
    "Tom", "Ball", new Integer(2)}, {
    "Alan", "Chung", new Integer(3)},
    }; TableModel dataModel = new AbstractTableModel() {
    public int getColumnCount() {
    return names.length;
    } public int getRowCount() {
    return data.length;
    } public Object getValueAt(int row, int col) {
    return data[row][col];
    } public String getColumnName(int column) {
    return names[column];
    } public Class getColumnClass(int col) {
    return getValueAt(0, col).getClass();
    } public void setValueAt(Object aValue, int row, int column) {
    data[row][column] = aValue;
    }
    }; tableView = new JTable(dataModel); ListSelectionModel listMod = tableView.getSelectionModel();
    listMod.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    listMod.addListSelectionListener(this); JScrollPane scrollpane = new JScrollPane(tableView);
    scrollpane.setPreferredSize(new Dimension(300, 300));
    frame.getContentPane().add(scrollpane);
    frame.pack();
    frame.setVisible(true);
    } public void valueChanged(ListSelectionEvent e) {
    int maxRows;
    int[] selRows;
    Object value; if (!e.getValueIsAdjusting()) {
    selRows = tableView.getSelectedRows(); if (selRows.length > 0) {
    for (int i = 0; i < 3; i++) {
    // get Table data
    TableModel tm = tableView.getModel();
    value = tm.getValueAt(selRows[0], i);
    System.out.print(value + " ");
    }
    System.out.println();
    }
    }
    } public static void main(String[] args) {
    new TableHideColumn();
    }
    }
      

  2.   

    使用JTable的:
    TableColumnModel getColumnModel():
              Returns the TableColumnModel that contains all column information of this table. 然后TableColumnModel类:
    void addColumn(TableColumn aColumn):
              Appends aColumn to the end of the tableColumns array
    void removeColumn(TableColumn column):
              Deletes the column from the tableColumns array
      

  3.   

    TableColumn col = tb.getColumn ("日期");col.setMaxWidth(0);
    col.setMinWidth(0);
    tb.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(0);
    tb.getTableHeader().getColumnModel().getColumn(0).setMinWidth(0);//tb是表格控件的名字