entanglement 8 de out. de 2012
É uma pergunta a ser feita ao seu espelho.
Como é que você referencia os componentes criados em tempo de execução? Guarda referências a ele em listas, ou em variáveis?
sam.swbk 8 de out. de 2012
A principio guardei a criação dos componentes em uma matriz.
Vou postar o código para melhor entendimento:
package com.fourspaces.couchdb.view ;
import com.fourspaces.couchdb.Database ;
import com.fourspaces.couchdb.Document ;
import java.awt.BorderLayout ;
import java.awt.Color ;
import java.awt.Frame ;
import java.awt.GridLayout ;
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListener ;
import java.io.IOException ;
import java.util.logging.Level ;
import java.util.logging.Logger ;
import java.util.regex.Pattern ;
import javax.swing.* ;
import javax.swing.border.LineBorder ;
public class AddToJScrollPane {
/**
* @param args
*/
private static Document doc ;
private static Database db ;
private static JFrame frame ;
public AddToJScrollPane ( Frame parent ){
this . doc = (( NewJFrame ) parent ). doc ;
this . db = (( NewJFrame ) parent ). db ;
this . frame = (( NewJFrame ) parent );
}
public static void main ( String [] args ) {
final JDialog dialog = new JDialog ( frame , true );
JScrollPane jScrollPane = new JScrollPane ();
jScrollPane . setHorizontalScrollBarPolicy ( JScrollPane . HORIZONTAL_SCROLLBAR_ALWAYS );
jScrollPane . setVerticalScrollBarPolicy ( JScrollPane . VERTICAL_SCROLLBAR_ALWAYS );
jScrollPane . setViewportBorder ( new LineBorder ( Color . RED ));
JPanel pContainer = new JPanel ();
GridLayout experimentLayout = new GridLayout ( 0 , 2 );
pContainer . setLayout ( experimentLayout );
String [] t = doc . toString (). split ( Pattern . quote ( "," ));
String dad = "" ;
final String w [][] = new String [ t . length ][ 2 ] ;
for ( int i = 0 ; i < t . length ; i ++ ){
System . out . println ( t [ i ] . toString ());
w [ i ] = t [ i ] . toString (). split ( Pattern . quote ( ":" ));
}
final String d [][] = new String [ w . length ][ 2 ] ;
final Object componentes [][] = new Object [ w . length ][ 2 ] ;
for ( int i = 0 ; i < w . length ; i ++ ){
for ( int j = 0 ; j < 2 ; j ++ ){
if ( j == 0 ){
d [ i ][ j ] = w [ i ][ j ] . toString (). replaceAll ( Pattern . quote ( "\"" ), "" ). replaceAll ( Pattern . quote ( "{" ), "" );
JLabel key = new JLabel ( String . valueOf ( d [ i ][ j ] ));
pContainer . add ( key , BorderLayout . LINE_START );
componentes [ i ][ j ] = key . getText ();
} else {
d [ i ][ j ] = w [ i ][ j ] . toString (). replaceAll ( Pattern . quote ( "\"" ), "" ). replaceAll ( Pattern . quote ( "}" ), "" );
JTextField value = new JTextField ( "Value:" );
value . setText ( String . valueOf ( d [ i ][ j ] ));
if (( j - 1 == 0 ) && ( d [ i ][ j - 1 ] . equals ( "_rev" )))
value . setEnabled ( false );
pContainer . add ( value , BorderLayout . LINE_END );
componentes [ i ][ j ] = value . getText ();
}
}
}
JPanel pContainer2 = new JPanel ();
GridLayout experimentLayout2 = new GridLayout ( 0 , 2 );
pContainer2 . setLayout ( experimentLayout2 );
/***************************************************************/
JScrollPane ScrollTroll = new JScrollPane ( pContainer );
JPanel jPanel2 = new JPanel ();
jPanel2 . setBorder ( javax . swing . BorderFactory . createEtchedBorder ());
JButton jbSave = new JButton ( "Save Document" );
jbSave . addActionListener ( new ActionListener () {
@Override
public void actionPerformed ( ActionEvent e ) {
for ( int i = 0 ; i < componentes . length ; i ++ ){
for ( int j = 0 ; j < 2 ; j ++ ){
//doc.put( d[i][j].toString(),d[i][j].toString() );
System . out . println ( ">>" + String . valueOf ( componentes [ i ][ j ] . toString ()));
}
}
try {
db . saveDocument ( doc );
dialog . dispose ();
} catch ( IOException ex ) {
Logger . getLogger ( AddToJScrollPane . class . getName ()). log ( Level . SEVERE , null , ex );
}
}
});
JButton jbCancel = new JButton ( "Cancel" );
jbCancel . addActionListener ( new ActionListener () {
@Override
public void actionPerformed ( ActionEvent e ) {
dialog . dispose ();
}
});
javax . swing . GroupLayout jPanel2Layout = new javax . swing . GroupLayout ( jPanel2 );
jPanel2 . setLayout ( jPanel2Layout );
jPanel2Layout . setHorizontalGroup (
jPanel2Layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . LEADING )
. addGroup ( javax . swing . GroupLayout . Alignment . TRAILING , jPanel2Layout . createSequentialGroup ()
. addContainerGap ( 108 , Short . MAX_VALUE )
. addComponent ( jbSave )
. addPreferredGap ( javax . swing . LayoutStyle . ComponentPlacement . RELATED )
. addComponent ( jbCancel )
. addGap ( 116 , 116 , 116 ))
);
jPanel2Layout . setVerticalGroup (
jPanel2Layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . LEADING )
. addGroup ( jPanel2Layout . createSequentialGroup ()
. addContainerGap ()
. addGroup ( jPanel2Layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . BASELINE )
. addComponent ( jbSave )
. addComponent ( jbCancel ))
. addContainerGap ( javax . swing . GroupLayout . DEFAULT_SIZE , Short . MAX_VALUE ))
);
javax . swing . GroupLayout layout = new javax . swing . GroupLayout ( dialog . getContentPane ());
dialog . getContentPane (). setLayout ( layout );
layout . setHorizontalGroup (
layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . LEADING )
. addGroup ( javax . swing . GroupLayout . Alignment . TRAILING , layout . createSequentialGroup ()
. addContainerGap ()
. addGroup ( layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . TRAILING )
. addComponent ( jPanel2 , javax . swing . GroupLayout . Alignment . LEADING , javax . swing . GroupLayout . DEFAULT_SIZE , javax . swing . GroupLayout . DEFAULT_SIZE , Short . MAX_VALUE )
. addComponent ( ScrollTroll , javax . swing . GroupLayout . Alignment . LEADING , javax . swing . GroupLayout . DEFAULT_SIZE , 380 , Short . MAX_VALUE ))
. addContainerGap ())
);
layout . setVerticalGroup (
layout . createParallelGroup ( javax . swing . GroupLayout . Alignment . LEADING )
. addGroup ( layout . createSequentialGroup ()
. addContainerGap ()
. addComponent ( ScrollTroll , javax . swing . GroupLayout . PREFERRED_SIZE , 205 , javax . swing . GroupLayout . PREFERRED_SIZE )
. addPreferredGap ( javax . swing . LayoutStyle . ComponentPlacement . RELATED )
. addComponent ( jPanel2 , javax . swing . GroupLayout . PREFERRED_SIZE , javax . swing . GroupLayout . DEFAULT_SIZE , javax . swing . GroupLayout . PREFERRED_SIZE )
. addContainerGap ( javax . swing . GroupLayout . DEFAULT_SIZE , Short . MAX_VALUE ))
);
/***************************************************************/
dialog . setResizable ( false );
dialog . setSize ( 500 , 500 );
dialog . setAlwaysOnTop ( true );
dialog . setLocationRelativeTo ( frame );
dialog . setVisible ( true );
}
}
sam.swbk 8 de out. de 2012
RESOLVIDO!
A resposta estava debaixo do meu nariz…
Segue código:
@Override
public void actionPerformed ( ActionEvent e ) {
String key = null , value = null ;
for ( int i = 0 ; i < componentes . length ; i ++ ){
for ( int j = 0 ; j < 2 ; j ++ ){
if ( j == 0 )
//System.out.println(">>"+String.valueOf(((JLabel)componentes[i][j]).getText()));
key = String . valueOf ((( JLabel ) componentes [ i ][ j ] ). getText ());
else
value = String . valueOf ((( JTextField ) componentes [ i ][ j ] ). getText ());
}
if ( ! key . equals ( "" ))
doc . put ( key , value );
}
try {
db . saveDocument ( doc );
dialog . dispose ();
} catch ( IOException ex ) {
Logger . getLogger ( AddToJScrollPane . class . getName ()). log ( Level . SEVERE , null , ex );
}
}