eu faco asssim (uso dicionario de dados), mas veja se pode aproveitar alguma coisa:
//////////////////////////////////////// browse ////////////////////////////////
SystLib oSystLib = new SystLib();
cQuery = "select * from sy3"+SystRmt.aUsuario[6]+"0 where sy3_alias = '"+Alias+"' order by sy3_folder,sy3_ordem ";
oTopBrw.ConectaBanco(false);
oTopBrw.execQuery(cQuery);
while( oTopBrw.oResultset.next() ) {
int nLargura = 10;
if ( oTopBrw.oResultset.getString("sy3_cbox1").trim().isEmpty() ){
if ( Integer.parseInt( oTopBrw.oResultset.getString("sy3_tamanho") ) > oTopBrw.oResultset.getString("sy3_titulo1").trim().length() ) {
nLargura = Integer.parseInt( oTopBrw.oResultset.getString("sy3_tamanho") ) * 8;
}else {
nLargura = oTopBrw.oResultset.getString("sy3_titulo1").trim().length() * 8;
}
}else {
nLargura = SystLib.TamMaxCBox( oTopBrw.oResultset.getString("sy3_cbox1").trim() , oTopBrw.oResultset.getString("sy3_titulo1").trim() );
}
aStructSX3.add(new EstrutSX3( oTopBrw.oResultset.getString("sy3_campo").trim() ,
oTopBrw.oResultset.getString("sy3_propri") ,
oTopBrw.oResultset.getString("sy3_ordem") ,
oTopBrw.oResultset.getString("sy3_titulo1").trim() ,
oTopBrw.oResultset.getString("sy3_tipo") ,
Integer.parseInt(oTopBrw.oResultset.getString("sy3_tamanho")) ,
Integer.parseInt(oTopBrw.oResultset.getString("sy3_decimal")) ,
nLargura ,
oTopBrw.oResultset.getString("sy3_usado") ,
Integer.parseInt(oTopBrw.oResultset.getString("sy3_nivel")) ,
oTopBrw.oResultset.getString("sy3_incalt") ,
oTopBrw.oResultset.getString("sy3_picture").trim() ,
oTopBrw.oResultset.getString("sy3_f3") ,
oTopBrw.oResultset.getString("sy3_browse") ,
oTopBrw.oResultset.getString("sy3_visual") ,
oTopBrw.oResultset.getString("sy3_senha") ,
oTopBrw.oResultset.getString("sy3_virtual") ,
oTopBrw.oResultset.getString("sy3_obrigat") ,
oTopBrw.oResultset.getString("sy3_folder") ,
oTopBrw.oResultset.getString("sy3_zeroesq") ,
oTopBrw.oResultset.getString("sy3_show") ,
oTopBrw.oResultset.getString("sy3_inicpad").trim() ,
oTopBrw.oResultset.getString("sy3_cbox1").trim() ,
oTopBrw.oResultset.getString("sy3_valid").trim() ,
oTopBrw.oResultset.getString("sy3_vlduser").trim() ) );
if ( oTopBrw.oResultset.getString("sy3_browse").toUpperCase().equals("S") ) {
nQtaColBrw ++;
}
}
int nLarBrw = oAbaMnt.width-130;
int nAltBrw = oAbaMnt.height-55;
oBrwScroll = new JScrollPane();
oBrwMnt = new JTable();
oBrwMnt.setModel(new DefaultTableModel( new Object [][] {} , HeaderBrw() ) {
boolean[] canEdit = DisableEditBrw() ;
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }
);
////////////////////////////////// largura das colunas do Brw //////////////////////////////////
int nColBrw = aStructSX3.size();
if ( nQtaColBrw > 0 && nColBrw > 0 ) {
int nLinhaBrw = 0;
EstrutSX3[] aSX3Tmp = new EstrutSX3[ nColBrw ];
for ( int h=0 ; h<nColBrw ; h++ ) {
aSX3Tmp[h] = (EstrutSX3) aStructSX3.get(h);
if ( aSX3Tmp[h].Browse.toUpperCase().equals("S") ) {
oBrwMnt.getColumnModel().getColumn(nLinhaBrw).setPreferredWidth( aSX3Tmp[h].Largura );
nLinhaBrw ++;
}
}
aSX3Tmp = null;
}
////////////////////////////////////////////////////////////////////////////////////////////////
oBrwMnt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
oBrwMnt.setColumnSelectionAllowed(false); // linha toda ou celula.
oBrwMnt.setDebugGraphicsOptions(DebugGraphics.NONE_OPTION);
oBrwScroll.setViewportView(oBrwMnt);
///////////////////////////////////// registros do Brw /////////////////////////////////////
oBrwLin = (DefaultTableModel) oBrwMnt.getModel();
oBrwLin.setNumRows(0);
if ( nColBrw > 0 ) {
cQuery = "select * from "+oSystLib.RetSQLName(Alias)+" where "+Alias+"_filial = '"+oSystLib.xFilial(Alias)+"' and d_e_l_e_t = ''";
oTopBrw.ConectaBanco(false);
oTopBrw.execQuery(cQuery);
while( oTopBrw.oResultset.next() ) {
String aColsBrw [] = new String [nQtaColBrw];
if ( nQtaColBrw > 0 ) {
int nLinhaBrw = 0;
EstrutSX3[] aSX3Tmp = new EstrutSX3[ nColBrw ];
for ( int h=0 ; h<nColBrw ; h++ ) {
aSX3Tmp[h] = (EstrutSX3) aStructSX3.get(h);
if ( aSX3Tmp[h].Browse.toUpperCase().equals("S") ) {
String kCampo = aSX3Tmp[h].Campo.trim();
if ( aSX3Tmp[h].Combo.trim().isEmpty() ){
aColsBrw[nLinhaBrw] = oTopBrw.oResultset.getString( kCampo ) ;
}else { // combobox.
aColsBrw[nLinhaBrw] = oSystLib.ShowDescrOpcCombo( oTopBrw.oResultset.getString( kCampo ) , oSystLib.DescrOpcComboSX3(kCampo) ) ;
}
nLinhaBrw ++ ;
}
}
aSX3Tmp = null;
}
oBrwLin.addRow( aColsBrw );
}
}
////////////////////////////////////////////////////////////////////////////////////////////
oTopBrw = null;
oSystLib = null;
oLayMnt = new GroupLayout( getContentPane() );
getContentPane().setLayout(oLayMnt);
oLayMnt.setHorizontalGroup(
oLayMnt.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(oLayMnt.createSequentialGroup()
.addGap(nLarBrw,nLarBrw,nLarBrw)
.addComponent(oBrwScroll, GroupLayout.PREFERRED_SIZE, nLarBrw, GroupLayout.PREFERRED_SIZE)
.addContainerGap(nLarBrw, Short.MAX_VALUE))
);
oLayMnt.setVerticalGroup(
oLayMnt.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(oLayMnt.createSequentialGroup()
.addGap(nAltBrw,nAltBrw,nAltBrw)
.addComponent(oBrwScroll, GroupLayout.PREFERRED_SIZE, nAltBrw, GroupLayout.PREFERRED_SIZE)
.addContainerGap(nAltBrw, Short.MAX_VALUE))
);
pack();
oBrwScroll.setBounds(125,25,nLarBrw,nAltBrw);
oDlgBrw.add(oBrwScroll);
////////////////////////////////////////////////////////////////////////////////