SetBounds y JInternalFrame

Si alguien puede ayudarme yo he creado
Un jinternalframe y quiero posicionar los componentes label, etiquetas, etc dentro del mismo lo he consegido con gridlayout y gridBagConstraints, pero cuando inserto un nuevo documento hay una locura de pile por nuevamente posicionar correctamente los componentes, yo se que exite la posiblidad de fijar a conveniencia con setBounds(colu, fil, larg, ancho); he probado esto pero no funciona dentro de mi internal frame, por favor si alguieb puede ayudarme estare muy agradecido..
Mil gracias manuel
Aqui una porcion de mi codigo java :
JDesktopPane desktop;
JInternalFrame bureauModifier;
GridBagConstraints c = new GridBagConstraints();//pour Instances
GridBagConstraints c2 = new GridBagConstraints();//pour buttons
private void db_lire() {//toolbar difier
desktop = new JDesktopPane();
desktop.setPreferredSize(new Dimension(desktopWidth, desktopHeight));
setContentPane(desktop);
createBureauModifier();
desktop.add(bureauModifier); //
}//fin de db_lire
/***internal frame: modification de produits*/
void createBureauModifier() {
//no vosible internal frame
JB_lire.setEnabled( true );
JB_nouveau.setEnabled( false );
JB_supprim.setEnabled( false );
//vider champ
viderChamps();
//contentPane1 = new JPanel();he utilizado esto para posicionar setbounds y sus coordenadas pero no funciona//
contentPane1.setLayout( new gridBagLayout());
JB_Modifier.setFont(new java.awt.Font("SansSerif", 0, 12));
JB_Modifier.setBorder(BorderFactory.createRaisedBevelBorder());
JB_Modifier.setActionCommand("JB_Modifier");
JB_Modifier.setText("Modifier");
JB_Annuler.setActionCommand("JB_Annuler");
JB_Annuler.setText("Annuler");
JB_Annuler.setFont(new java.awt.Font("SansSerif", 0, 12));
JB_Annuler.setBorder(BorderFactory.createRaisedBevelBorder());
b3.setFont(new java.awt.Font("SansSerif", 0, 12));
b3.setBorder(BorderFactory.createRaisedBevelBorder());
/*x=col,y=fil,alto,largo ,espace entre champs x,y*/
//primer bloque de jlabel
c.gridx = 0;c.gridy = 0; c.gridheight = 1;c.gridwidth =3;
c.fill = c.BOTH;
c.weightx = 1;
c.weighty = 1;//c.weightx = 1;
//col,file,largueur,ancheur
//jLabel1.setBounds(new Rectangle(0,0, 10,2)); ¿No funciona? Me gustaria hacerlo con set Bounds
contentPane1.add(jLabel1,c);
c.gridy = 1;
//jLabel2.setBounds(new Rectangle(0,1, 10,2));
contentPane1.add(jLabel2,c);
c.gridy = 2;
//jLabel3.setBounds(new Rectangle(0,2, 10,2));
contentPane1.add(jLabel3,c);
c.gridy = 3;
//jLabel4.setBounds(new Rectangle(0,3, 10,2));
contentPane1.add(jLabel4,c);
c.gridy = 4;
//jLabel5.setBounds(new Rectangle(0,4, 10,2));
contentPane1.add(jLabel5,c);
c.gridy = 5;
//jLabel6.setBounds(new Rectangle(0,5, 10,2));
contentPane1.add(jLabel6,c);
//primer bloque de field
c.fill = c.HORIZONTAL;
c.gridx = 3; c.gridy = 0; c.gridheight = 1;c.gridwidth = 5;
c.weightx = 1; c.weighty = 1;//COLUN
db_lire_table();
cod_edit.addItem(" ");
for (int i=0;i<donnees.size();i++)
{
Produitslabel temp = (Produitslabel)donnees.get(i);
// cod_edit.setEditable(true);
cod_edit.addItem(temp.Code);
}
// Color grisMoyen= new Color (128,128,128);
// grisMoyen.brighter();
cod_edit.setBackground(Color.lightGray);
//rectangle (column,file,largeur,hauteur)
//cod_edit.setBounds(new Rectangle(3,0, 10,2));
contentPane1.add(cod_edit);
cod_edit.setEditable(true);
//cod_edit.setSelectedIndex(0);
cod_edit.addItemListener( new ItemListener() {
public void itemStateChanged(ItemEvent e1) {
viderChamps();
code =cod_edit.getSelectedItem(); //devuele string
cod=(String)code;
//int rang=cod_edit.getSelectedIndex();
for (int reg=0;reg<donnees.size();reg++)
{
Produitslabel temp = (Produitslabel)donnees.get(reg);
if(temp.Code==cod)
{
//itembox=reg;
JTF_Cod.setText(cod);
MyDocumentListener myDocumentListener = new MyDocumentListener();
JTF_Cod.getDocument().addDocumentListener(myDocumentListener);
JTF_Nom.setText(temp.Nom);
JTF_Nom.getDocument().addDocumentListener(myDocumentListener);
JTF_Cat.setText(temp.Categorie);
JTF_Cat.getDocument().addDocumentListener(myDocumentListener);
JTF_Fou.setText(temp.Fournisseur);
JTF_Fou.getDocument().addDocumentListener(myDocumentListener);
String stQunite=String.valueOf(temp.Qunite);
JTF_Qua.setText(stQunite);
JTF_Qua.getDocument().addDocumentListener(myDocumentListener);
String stPrix=String.valueOf(temp.Prixunitaire);
JTF_Pri.setText(stPrix);
JTF_Pri.getDocument().addDocumentListener(myDocumentListener);
String ststock=String.valueOf(temp.Unitesenstock);
JTF_Sto.setText(ststock);
JTF_Sto.getDocument().addDocumentListener(myDocumentListener);
String stCommande=String.valueOf(temp.Unitescommandees);
JTF_Com.setText(stCommande);
JTF_Com.getDocument().addDocumentListener(myDocumentListener);
String streapp=String.valueOf(temp.Niveaureapp);
JTF_Rea.setText(streapp);
JTF_Rea.getDocument().addDocumentListener(myDocumentListener);
//JTF_Rea.setText(temp.Indisponible);
JTF_Ima.setText(temp.Nomimage );
JTF_Ima.getDocument().addDocumentListener(myDocumentListener);
}//fin if
}//fin for
} //fin void
}); //fin d'event listener choice
c.gridy = 1;
//JTF_Nom.setBounds(new Rectangle(3,1, 10,2));
contentPane1.add(JTF_Nom,c);//aqui he quitado el c
//JTF_Cat.setBounds(new Rectangle(3,2, 10,2));
c.gridy = 2;
contentPane1.add(JTF_Cat,c);
c.gridy = 3;
//JTF_Fou.setBounds(new Rectangle(3,3, 10,2));
contentPane1.add(JTF_Fou,c);
c.gridy = 4;
//JTF_Qua.setBounds(new Rectangle(3,4, 10,2));
contentPane1.add(JTF_Qua,c);
c.gridy = 5;
//JTF_Pri.setBounds(new Rectangle(3,5, 10,2));
contentPane1.add(JTF_Pri,c);
//segundo bloque de label
c.fill = c.BOTH;
c.gridx = 12;c.gridy = 0;c.gridheight = 1;c.gridwidth = 3;
//jLabel7.setBounds(new Rectangle(12,0, 10,2));
contentPane1.add(jLabel7,c);
//jLabel8.setBounds(new Rectangle(12,1, 10,2));
c.gridy = 1;
contentPane1.add(jLabel8,c);
//jLabel9.setBounds(new Rectangle(12,2, 10,2));
c.gridy = 2;
contentPane1.add(jLabel9,c);
//jLabel10.setBounds(new...

1 respuesta

Respuesta
1
Yo lo he tenido que hacer en algunos programas, te doy la idea, se que voy a ser muy escueto pero tengo mucho trabajo y no puedo extenderme mucho.
Lo consegui haciendo todo en un panel fuera del JInternalFrame, esto es bueno porque asi no depende de nada, y se puede utilizar con otros elementops (frame, pestañas, etc..) una vez tenida la clase Panel con todo definido, solo te queda incluirla en el JInternalFrame, creo que con un getContentPanel().
Lo seinto por no poder ayudarte más, pero estoy muy liado.
Adios y suerte...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas