ordenar controles swing

Iniciado por DiTeN, 15 Junio 2010, 02:24 AM

0 Miembros y 2 Visitantes están viendo este tema.

DiTeN

Buenas gente,
les comento un poco, mi aplicacion utilizo un frame principal y los demas son internal frames, que contienen JPanels, estos JPanels heredan de un JPanel base algunos controles para ahorrar codigo, el gran tema que tengo es el desorden que tengo, cuando lo ejecuto, yo en el JPanel que hereda agrego algunos otros componentes, pero el desorden es notable, es decir me gustaria ordenarlos, pero los que heredo no creo que pueda, o hay alguna forma??? eso es lo que necesito, se que es por el Layout, pero... no se por donde, gracias....

Leyer

Eso depende de como quieres colocar tus componentes claro

Infórmate sobre los mas usados aquí
http://chuwiki.chuidiang.org/index.php?title=Uso_de_Layouts

DiTeN

Gracias Leyer por la repuesta :), te comento, algo como me explique yo he buscado por ahi (por cierto muy bueno el link), y me decidi por flowlayout, ahora el problema q tengo es que me queda todo en el mismo rengolon, y encima, como tengo un JTextField vacio, se me achica, y no puedo hacerlo aparecer del tamano que deseo, he probado con casi todos... y me sigue el mismo problema, o incluso a veces, desaparecen los componentes seguramente se vayan a otro lado o no se.... lo que me gustaria es poder darles un orden, por ej los textfield y las labels al lado de uno y los demas abajo, el jlist al costado, y el button abajo... pero no se, aclaro que con la unica que puedo ver todos los controles (incluso los que heredo) es con el flowlayout,

gracias, saludos!

Chuidiang

Hola:

Para que un JTextField vacío  tenga tamaño, pásale en el constructor el número de caracteres que quieres que visualice

textField = new JTextField(20);

Si quieres colocar los componentes en determinadas posiciones, el más completo es el GridBagLayout http://www.chuidiang.com/java/layout/GridBagLayout/GridBagLayout.php

Si quieres que se parezca a una especie de formulario (labels a la izquierda, textfields a la derecha y todo más o menos alineado), el layout adecuado es el GroupLayout http://java.sun.com/javase/6/docs/api/javax/swing/GroupLayout.html

Se bueno.

DiTeN

gracias chuidiang, siempre leyendo tus cosas, y ahora me contestas  ;D un honor, gracias ehh!!!!! jeje una lastima que este en ingles, pero bueno le estoy tratando de entender....

Saludos!!!!!! y me es de gran utilidad :)

DiTeN

hola, y gracias por la ayuda chuidiang, me sirvio mucho lo de gridbaglayout, ahora tengo un problema con el ejemplo q tu me diste, yo no hago add, ya que los elementos ya los tengo en el panel, hay alguna forma de modificarle los gridBagConstraint? o de ubicar los elementos por pos???

Gracias saludos...

Chuidiang

Hola:

Si quieres encargarte tú de las posiciones de los elementos (de todo), hazle al panel un setLayout(null) y a cada uno de los elementos llama a setBounds() para darle posición y tamaño.

Se bueno.

DiTeN

Hola gracias por las amables respuestas como siempre en este gran foro, ahora tengo un problema, porque si podria darle la ubicacion con el setBounds, el problema que tengo es q mi programa tiene internalFrame q contienen al jPanel p2 = new PanelProv(); //panel de CATEGORIA
//            p2.setLayout(new FlowLayout());
            //p2.setLayout(null);
            //p.setLayout(new CardLayout());
  //          p.setLayout(new BoxLayout());
            //p.setAutoscrolls(true);

            p2.applyComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); // orddena los elementos de izq a der
           p.setLayout(new GridLayout());

            // Se construye el JInternalFrame
            JInternalFrame internal2 = new JInternalFrame("Proveedores");
            //JComponent c = (JComponent) internal.getContentPane();
            internal2.add(p2);
            internal2.pack();
            internal2.setResizable(true);
            //internal.setSize(1000,5000);
            internal2.setMaximizable(true);
           // internal.setMaximum(true);
            internal2.setClosable(true);
            internal2.setVisible(true);
            this.add(internal2);


este es un ejemplo, yo lo que hago es modificar el layout del panel, pero como llamo a los elementos???? no puedo no??? no me sirve borrarlos y ag de nuevo... bueno gente, gracias....

Chuidiang

Antes de añadir los elementos guárdalos en variables o atributos de la clase, así los tienes accesibles para llamar a métodos de ellos.

Se bueno.

joseprox

Trata de Inicializar los Paneles con

JPanel  jpaneEjemplo = new  JPanel();
JLabel la = new JLabel("HOLA");

jpaneEjemplo.setLayout(null)..

la.setBounds(5,10,100,15);

jpaneEjemplo.add(la);

Toda persona tiene derecho a cometer errores...
la verdad es q solo ella es RESPONSABLE DE LO QUE HACE.....!!!!!