Hello,all
I use a fixedColumnTable in my application,if the table has too many
rows,when the table scroll down ,the fixed column does not right display,but
the unfixed column can right sshow. I use ulc-6.0.1,weblogic,db2 database,the
fixedColumnTable is as follows:
package pbs.mysortedAndFixedTable.view;
import com.ulcjava.base.application.ULCScrollPane;
import com.ulcjava.base.application.ULCComponent;
import com.ulcjava.base.application.ULCScrollPane;
import com.ulcjava.base.application.ULCBoxPane;
import com.ulcjava.base.application.*;
import com.ulcjava.base.application.table.AbstractTableModel;
import pbs.mysortedAndFixedTable.model.*;
import com.ulcjava.base.application.util.Dimension;
import com.ulcjava.base.application.table.*;
public class FixedColumnTablePane extends ULCScrollPane {
private TableModel fFixedTableModel;
private TableModel fUnFixedTableModel;
private ULCTable fFixedTable;
private ULCTable fUnFixedTable;
public FixedColumnTablePane(TableModel fixedTableModel,TableModel
unFixedTableModel){
fFixedTableModel=fixedTableModel;
fUnFixedTableModel=unFixedTableModel;
fFixedTable = new ULCTable();
fFixedTable.setAutoCreateColumnsFromModel(false);
fFixedTable.setModel(fixedTableModel);
fFixedTable.setAutoResizeMode(ULCTable.AUTO_RESIZE_OFF);
fFixedTable.setShowGrid(true);
fUnFixedTable= new ULCTable();
fUnFixedTable.setAutoCreateColumnsFromModel(false);
fUnFixedTable.setModel(unFixedTableModel);
fUnFixedTable.setShowGrid(true);
fUnFixedTable.setAutoResizeMode(ULCTable.AUTO_RESIZE_OFF);
this.setViewPortView(fUnFixedTable);
this.setCorner(ULCScrollPane.UPPER_LEFT_CORNER,
fFixedTable.getTableHeader());
this.setRowHeaderView(fFixedTable);
Dimension preferredSize = new Dimension(35*3, -1);
this.getRowHeaderView().setMaximumSize(preferredSize);
this.getRowHeaderView().setPreferredSize(preferredSize);
this.getRowHeaderView().setMinimumSize(preferredSize);
this.setVisible(true);
this.setAutoscrolls(true);
}
public void setModel(TableModel fixedTableModel,TableModel
unFixedTableModel ){
fFixedTableModel=fixedTableModel;
fUnFixedTableModel=unFixedTableModel;
if((fFixedTableModel!=null)&&(fFixedTableModel.getColumnCount()>0)){
fFixedTable.setModel(fFixedTableModel);
addColumn(fFixedTable,fFixedTableModel);
fFixedTableModel.fireTableStructureChanged();
if((fUnFixedTableModel==null)||(fUnFixedTableModel.getColumnCount()==0)){
this.setViewPortView(fFixedTable);
}else{
this.setViewPortView(fUnFixedTable);
this.setRowHeaderView(fFixedTable);
this.setCorner(ULCScrollPane.UPPER_LEFT_CORNER,
fFixedTable.getTableHeader());
}
}else{
this.setRowHeaderView(null);
}
if((fUnFixedTableModel!=null)&&(fUnFixedTableModel.getColumnCount()>0)){
fUnFixedTable.setModel(fUnFixedTableModel);
addColumn(fUnFixedTable,fUnFixedTableModel);
fUnFixedTableModel.fireTableStructureChanged();
this.setViewPortView(fUnFixedTable);
}
Dimension preferredSize = new Dimension(105,-1);
this.getRowHeaderView().setMaximumSize(preferredSize);
this.getRowHeaderView().setPreferredSize(preferredSize);
this.getRowHeaderView().setMinimumSize(preferredSize);
this.getCorner(ULCScrollPane.UPPER_LEFT_CORNER).setPreferredSize(preferredSize);
this.getCorner(ULCScrollPane.UPPER_LEFT_CORNER).setMaximumSize(preferredSize);
this.getCorner(ULCScrollPane.UPPER_LEFT_CORNER).setMinimumSize(preferredSize);
this.upload();
}
public void addColumn(ULCTable table,TableModel tableModel){
if((table==null)||(tableModel==null)){
return;
}
for(int i=0;i<tableModel.getColumnCount();i++){
table.addColumn(new ULCTableColumn(i, 35, null, null));
}
}
public TableModel getFixedTableModel(){
return fFixedTableModel;
}
public TableModel getUnFixedTableModel(){
return fUnFixedTableModel;
}
public ULCTable getFixedTable(){
return fFixedTable;
}
public ULCTable getUnFixedTable(){
return fUnFixedTable;
}
}
}Any advise will be appreciated,Thanks in advance!
chenghh
[EMAIL PROTECTED]
2007-04-02