Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Error JAVA swing al mostrar componentes

Estas en el tema de Error JAVA swing al mostrar componentes en el foro de Java en Foros del Web. Hola, no entiendo porque me pasa esto, a ver si alguien me puede decir que hago mal. Como se ve en el vídeo, al imprimir ...
  #1 (permalink)  
Antiguo 09/06/2014, 05:53
 
Fecha de Ingreso: enero-2005
Mensajes: 85
Antigüedad: 19 años, 2 meses
Puntos: 0
Error JAVA swing al mostrar componentes

Hola, no entiendo porque me pasa esto, a ver si alguien me puede decir que hago mal.
Como se ve en el vídeo, al imprimir los componentes parece que queda el panel anterior aún ahi... tipo fantasma, aun haciendo un removeAll() como se ve en evento

http://www.youtube.com/watch?v=BaBIIL8jY4g

Al imprimir la ventana, tengo que pasar el raton por encima de los componentes para que aparezcan, aún asi si cambio el tamaño de la ventana vuelve a salir como se aprecia en el vídeo :/
__________________
Videos Graciosos
  #2 (permalink)  
Antiguo 09/06/2014, 06:13
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Error JAVA swing al mostrar componentes

Cuando una ventana está visible y cambias sus compontes (removeAll o añadir componentes nuevos), debes llamar al método updateUI() del panel principal de la ventana o de los componentes que cambian para que los cambios se vean. Basta una sola llamada después de que hayas hecho todos los cambios.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 09/06/2014, 09:58
 
Fecha de Ingreso: enero-2005
Mensajes: 85
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Error JAVA swing al mostrar componentes

estoy poniendo el metodo updateUI() por todos lados, pero no me funciona, por si sirve de ayuda expongo el cógido completo:

Cita:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package interfaz;

import barcos.Barco;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.Border;
import tablero.Tablero;

/**
*
* @author Juan
*/
public class Juego extends JFrame implements ActionListener{

private int filas,columnas;
private Tablero usuario,pc;
private JPanel panelBienvenida,panelEligeSup,panelEligeCentro,pan el,sidebar,panelUsuario,panelPC;
private JButton boton;
private JButton [][] botones;
private JTextField alto, ancho;
private JComboBox posiciones;

public Juego(){


setSize(500,200);
setVisible(true);


panelBienvenida = new JPanel(new FlowLayout());
this.add(panelBienvenida);




alto = new JTextField("10");
ancho = new JTextField("10");
boton = new JButton("iniciar");
boton.addActionListener(this);

panelBienvenida.add(alto);
panelBienvenida.add(ancho);
panelBienvenida.add(boton,FlowLayout.RIGHT);


this.setLocationRelativeTo(null);
this.paintAll(this.getGraphics());

}

public void eligePosiciones(){

setLayout(new BorderLayout());
panelEligeSup = new JPanel();
this.add(panelEligeSup,BorderLayout.NORTH);

JLabel elige = new JLabel("Elige la posicion del barco");
panelEligeSup.add(elige,BorderLayout.CENTER);

String [] comboPosiciones = new String []{"Horizontal","Vertical"};
posiciones = new JComboBox(comboPosiciones);

panelEligeSup.add(posiciones,BorderLayout.SOUTH);

panelEligeCentro = new JPanel(new GridLayout(this.filas,this.columnas,10,10));
this.add(panelEligeCentro,BorderLayout.CENTER);

botones = new JButton[this.filas][this.columnas];

usuario = new Tablero(this.filas,this.columnas,0);

for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
botones[i][j] = new JButton(String.valueOf(i)+":"+String.valueOf(j));
botones[i][j].addActionListener(this);
panelEligeCentro.add(botones[i][j]);
}
}


this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
this.setLocationRelativeTo(null);
this.paintAll(this.getGraphics());
}


@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(boton)){

this.filas=Integer.parseInt(alto.getText());
this.columnas=Integer.parseInt(ancho.getText());
eligePosiciones();

this.panelBienvenida.removeAll();
this.paintAll(this.getGraphics());
setSize(900,600);

setVisible(true);

}

// recorro para saber que boton es seleccionado y guardo su texto
for (int i = 0; i < filas; i++) {
for (int j = 0; j < columnas; j++) {
if(e.getSource().equals(botones[i][j])){
String [] pos = botones[i][j].getText().split(":");
System.out.println("separo la fila: "+pos[0]+"y la columna"+pos[1]);
}
}
}
}


}
__________________
Videos Graciosos
  #4 (permalink)  
Antiguo 09/06/2014, 11:02
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Error JAVA swing al mostrar componentes

¿Dónde están los updateUI?

Para el primer setVisible() que se ve en el código, hazlo después de haber añadido todos los componentes y no al principio.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 09/06/2014, 11:58
 
Fecha de Ingreso: enero-2005
Mensajes: 85
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Error JAVA swing al mostrar componentes

hola, se lo pongo a panelBienvenida a panelEligeSup, a uno solo, a los dos a la vez, pero no me hace ni caso. el primer metodo se muestra bien, tal y como se ve en el vídeo, pero el segundo parece que queda la sombra del panel panelBienvenida para ello en teoria es el this.panelBienvenida.removeAll();

Pero algo debo hacer mal, ya que es la primera vez que trabajo con graficos
__________________
Videos Graciosos
  #6 (permalink)  
Antiguo 09/06/2014, 22:40
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Error JAVA swing al mostrar componentes

¿Y si en vez de quitarle los componentes al panelBienvenida quitas el panelBienvenida en sí mismo?
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 10/06/2014, 02:07
 
Fecha de Ingreso: enero-2005
Mensajes: 85
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Error JAVA swing al mostrar componentes

Cita:
Iniciado por chuidiang Ver Mensaje
¿Y si en vez de quitarle los componentes al panelBienvenida quitas el panelBienvenida en sí mismo?

Por mi encantado de quitarlo jeje, m sueño con el. Como lo quito?
__________________
Videos Graciosos
  #8 (permalink)  
Antiguo 10/06/2014, 03:35
 
Fecha de Ingreso: enero-2005
Mensajes: 85
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Error JAVA swing al mostrar componentes

claro!
this.remove(panelBienvenida);

ahora funciona :) muchas gracias, por cierto es un placer hablar contigo, que sepas que muchos ejercicios los aprendemos en clase usando tu wiki, sobre todo muy bien explicado GridBagLayout, seguiré leyendote y te animo a que sigas escribiendo :P.

Un saludo
__________________
Videos Graciosos

Etiquetas: swing
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:27.