Foro de elhacker.net

Programación => Java => Mensaje iniciado por: almensilla en 31 Diciembre 2010, 22:26 pm



Título: [SOLUCIONADO] Crear un jLabel dentro de un jFrame existente
Publicado por: almensilla en 31 Diciembre 2010, 22:26 pm
Buenas a todos,
es la primera vez que escribo en este foro y la verdad es que ya estoy desesperado porque no encuentro la manera de resolver un problema que me surge.

Os pongo en situacion:
Tengo un jFrame que hace varias cosas, y una de ellas es mostrar una lista con varios componentes y lo que me gustaria conseguir es que cada vez que pulse un componente de esa lista, se cree un jLabel en un jFrame diferente (no el que contiene esa lista) pero que ya existe.

He intentado de todo, me he metido en foros ingleses pero nadie tiene esta duda concreta, o las respuestas que he visto no me han servido.

Lo que he intentado hacer es:
en el evento del click de la lista, he creado el jLAbel y despues he llamado directamente al jFrame y lo he intentado añadir. Lo he hecho de todas estas maneras:

- jFrame1.getContentPane().add(jLabel)
-jFrame1.getContentPane().add(jLabel).validate();
-jFrame1.add(jlabel);
-jFrame1.getContentPane().add(textLabel);
  jFrame1.pack();

Y varias mas pero que ahora mismo no recuerdo. He probado a que se cree un jFrame nuevo y añadirlo y eso SI funciona. Pero lo que yo quiero es que se añada en un jFrame que ya existe.

Por si sirve de algo os dejo el esquema de la gui:

-jFrame1
  +jMenuBar
  -jLayeredPane1
     ·label jLabel1

Tambien he intentado añadirlo directamente al jlayeredpane (Que en realidad es donde lo quiero meter) pero tampoco hace nada.

Agradezco cualquier ayuda!

saludos


Título: Re: Crear un jLabel dentro de un jFrame existente
Publicado por: klaine en 31 Diciembre 2010, 22:59 pm
intenta lo siguiente:

Código
  1.  
  2. Container panel = tuVentana.getContentPane();
  3.  
  4. tuVentana.setVisible(false);
  5. panel.add(TuComponente);
  6. tuVentana.setVisible(true);
  7.  
  8.  


Título: Re: Crear un jLabel dentro de un jFrame existente
Publicado por: almensilla en 31 Diciembre 2010, 23:48 pm
Que va, no funciona. Os pongo el codigo por si os sirve de algo:
Código
  1. private void jList2MouseClicked(java.awt.event.MouseEvent evt) {                                    
  2.        // TODO add your handling code here:
  3.        System.out.println("Aqui ha yegado");
  4.        JLabel textLabel = new JLabel("I'm a label in the window",SwingConstants.CENTER);
  5.        textLabel.setPreferredSize(new Dimension(300, 100));
  6.        textLabel.setIcon(new javax.swing.ImageIcon("images/map/error.png") );
  7.        textLabel.setVisible(true);
  8.        textLabel.setEnabled(true);
  9.        textLabel.setLayout(null);
  10.  
  11.       // jFrame1.getContentPane().setLayout(new FlowLayout());
  12.  
  13.        Container panel=jFrame1.getContentPane();
  14.        jFrame1.setVisible(false);
  15.        panel.add(textLabel);
  16.        jFrame1.setVisible(true);
  17.  
  18.  
  19.  
  20.        //jFrame1.getContentPane().add(textLabel);
  21.        //jFrame1.pack();
  22.  

Muchas gracias!!


Título: Re: Crear un jLabel dentro de un jFrame existente
Publicado por: almensilla en 1 Enero 2011, 17:53 pm
Nadie se le ocurre como poder hacerlo?

Y sabeis si se puede en vez de hacer lo que yo quiero hacer, arrastrar un elemento de esa lista a otro jFrame y que se quede ahi?

Basicamente la idea de lo que quiero hacer es que en una lista se muestren un conjunto de elementos que estan funcionando en ese instante (son elementos que pueden desaparecer o darse de alta solos) y que pueda coger cada uno de esos elementos de esa lista y los pueda mostrar en un mapa. Habia pensado en arrastrarlo o en su defecto lo que dije al principio de pinchar en el y que apareciera en el otro jframe para desde ahi poder arrastrarlo y colorcalo en la zona del mapa que yo quiera.

Sabeis como se puede hacer eso, o teneis algun ejemplo similar??
Muchas Gracias y feliz año!


Título: Re: Crear un jLabel dentro de un jFrame existente
Publicado por: klaine en 3 Enero 2011, 22:10 pm
¿y si simplemente destruyes esa ventana?, luego creas una nueva con los valores que deseas

Código
  1. TuVentana.dispose();
  2. // <crear nueva ventana>
  3.  

Previamente guardas los valores que deseas que tenga en variables static, declaradas globalmente.


Título: Re: Crear un jLabel dentro de un jFrame existente
Publicado por: Leyer en 3 Enero 2011, 23:55 pm
Y sabeis si se puede en vez de hacer lo que yo quiero hacer, arrastrar un elemento de esa lista a otro jFrame y que se quede ahi?

:http://www.roseindia.net/java/example/java/swing/drag-drop.shtml

Para el problema principal ,Tienes que usar un panel y agregar el componente a el  luego llamas al metodo updateUI().

un saludo.


Título: Re: Crear un jLabel dentro de un jFrame existente
Publicado por: almensilla en 4 Enero 2011, 11:43 am
Muchas gracias por las respuestas. Esta tarde lo pruebo que no tengo ahora mismo el proyecto en este ordenador, y os comento.

Un saludo


Título: Re: Crear un jLabel dentro de un jFrame existente
Publicado por: L0n3l1eR en 5 Enero 2011, 06:01 am
Disculpa la pregunta pero lo estas haciendo manualmente o usando el palette?


Título: Re: Crear un jLabel dentro de un jFrame existente
Publicado por: almensilla en 7 Enero 2011, 14:07 pm
Ummm no se a qué te refieres con el palette. Lo estoy haciendo con la interfaz de netbeans, es decir, seleccionando los componentes que quiero que tenga mi GUI y los voy colocando como quiero, y lo unico que voy programanado son lso eventos del mouse y tal..


Título: Re: Crear un jLabel dentro de un jFrame existente
Publicado por: kondrag_X1 en 7 Enero 2011, 14:25 pm
alomejor te interesa utilizar JDialog es lo mismo xD ,bueno parecido a JFrame pero te lo habre aparte.

aki el link :http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JDialog.html


Título: Re: Crear un jLabel dentro de un jFrame existente
Publicado por: almensilla en 4 Febrero 2011, 17:44 pm
Muchas gracias a todos, ya lo he conseguido.
Era mas simple que todo lo que estaba pensando. Simplemente hay que ponerle un lugar en la ventana donde vaya a estar con el metodo setBounds al jlabel antes de añadirlo al jFrame.
Es decir, seria asi:

Código:
JLabel jj=new JLabel("Hola");
jj.setBounds(10,10,10,10);
jFrame.getContentPane().add(jj);

No hace falta hacer ni repaint, ni validate ni nada.

Muchas gracias a todos.
Un saludo


Título: Re: [SOLUCIONADO] Crear un jLabel dentro de un jFrame existente
Publicado por: Nakp en 8 Febrero 2011, 16:04 pm
creo que en todo caso era asi

Código
  1. jFrame1.getContentPane().add(new jLabel("Hola"));

pero no tengo ni idea como accesarias a ella :xD