请问JTable控件怎样能让某一列存在却不显示?急!!

J2EE 码拜 6年前 (2015-05-11) 313次浏览 0个评论
 

例如:有一个字段是序号,我需要用它来更新数据库,可是我又不希望用户看到这一列因为这一列对用户没有任何意义,请问怎样实现这个功能?谢谢了!

将宽度设置为0啊~~~~~~~
请问宽度设为零怎么设?我用了下面的语句不管用啊。

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);   //这一行就是设置宽度为零,对吗?

高手们在帮我看看吧,急啊,谢谢了!
40分
第一种方法:
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();
}
}

10分
使用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

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是表格控件的名字


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明请问JTable控件怎样能让某一列存在却不显示?急!!
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!