elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: ¿Usas Skype? Protégete de los Skype Resolver


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General (Moderador: Eleкtro)
| | |-+  Actualizar JFrame
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Actualizar JFrame  (Leído 66 veces)
Eskizoide

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Actualizar JFrame
« en: 16 Abril 2018, 13:09 »

Buenas, estoy haciendo un programilla del random walk, es decir una linea que se va moviendo por una cuadrícula de manera aleatoria. Bien, estoy haciendo todo el tema de la GUI y tengo un problema. Yo tengo varios botones: Empezar, finalizar, cambiar color y un jtextfield con un botón de convertir al lado.

Empezar comienza la simulación, finalizar la termina, cambia de color cambia la linea de color y lo de convertir cambia la cuadrícula por el número de cuadrados especificados en el text field.

Mi problema es que puedo iniciar el programa con el botón Empezar, pero si después intento cambiar el número de cuadrados que hay no se porque el programa no se actualiza. Se que el problema esta en que estoy haciendo lo mismo cuando le doy al boton empezar y cuando le doy al boton convertir pero no se como hacerlo, empecé hace bien poquito y aún sigo pescando con algunas cosas. Aquí os dejo el código:

Código:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;


public class FPrincipal extends javax.swing.JFrame {
 private JPanel PContenedorDibujo;


 public static void main(String[] args) {
  SwingUtilities.invokeLater(new Runnable() {
   public void run() {
    FPrincipal inst = new FPrincipal();
    inst.setLocationRelativeTo(null);
    inst.setVisible(true);
   }
  });
 }
 
 public FPrincipal() {
  super();
  initGUI();
 }
 
 private void initGUI() {
  try {
   setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
   BorderLayout thisLayout = new BorderLayout();
   getContentPane().setLayout(thisLayout);
   this.setTitle("Random Walk");
  
   JPanel btnPanel = new JPanel(new FlowLayout());
JButton btnEmpezar = new JButton("Empezar");
btnPanel.add(btnEmpezar);
btnEmpezar.addActionListener(new ActionListener() {
        private PDibujo pDibujo;

@Override
        public void actionPerformed(ActionEvent evt) {
            PContenedorDibujo = new JPanel();
            BorderLayout PContenedorDibujoLayout = new BorderLayout();
            PContenedorDibujo.setLayout(PContenedorDibujoLayout);
            getContentPane().add(PContenedorDibujo, BorderLayout.CENTER);
            this.pDibujo = new PDibujo(10);
            PContenedorDibujo.add(this.pDibujo);
            pack();
            setSize(600, 600);
        }
    });

JPanel btnPanel2 = new JPanel(new FlowLayout());
JButton btnFinalizar = new JButton("Finalizar");
btnPanel.add(btnFinalizar);
btnFinalizar.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent evt) {
         try {
System.out.println("Terminando el programa en 4 segundos...");
         Thread.sleep(4000);
System.exit(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
        }
    });

JPanel btnPanel3 = new JPanel(new FlowLayout());
JButton btnLeft3 = new JButton("Cambiar Color");
btnPanel.add(btnLeft3);

JPanel btnPanel4 = new JPanel(new FlowLayout());
JTextField btnText = new JTextField(10);
JButton btnEnter = new JButton("Convertir");
btnPanel.add(btnText);
btnPanel.add(btnEnter);
btnEnter.addActionListener(new ActionListener() {
        private PDibujo pDibujo;

@Override
        public void actionPerformed(ActionEvent evt) {
dispose();
         String texto = btnText.getText();
         int num = Integer.parseInt(texto);
         PContenedorDibujo = new JPanel();
            BorderLayout PContenedorDibujoLayout = new BorderLayout();
            PContenedorDibujo.setLayout(PContenedorDibujoLayout);
            getContentPane().add(PContenedorDibujo, BorderLayout.CENTER);
            this.pDibujo = new PDibujo(num);
            PContenedorDibujo.add(this.pDibujo);
            repaint();
            pack();
            setSize(600, 600);
            setVisible(true);
            
        }
    });

Container cp = getContentPane();
    cp.setLayout(new BorderLayout());
    cp.add(btnPanel, BorderLayout.SOUTH);
    setSize(600, 600);
    
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

La clase de Pdibujo creo que no me hace falta ponerla para que se vea el problema, pero si no la pongo si veo que tal, muchísimas gracias a quien pueda ayudarme! Y no os echéis a llorar si veis fallos muy básicos en el programa.

PD: queda bastante mal todo el código ahi pegado de una pero es bastante sencillo,  lo importante esta en los actionEvent de los botones Empezar y Convertir, en los que basicamente tengo el mismo código para inicializar la GUI (cosa que estoy seguro que no debería hacer)


« Última modificación: 16 Abril 2018, 13:11 por Eskizoide » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda: como mostrar un JFrame de otro JFrame.
Programación General
dragon_abraxas 0 2,194 Último mensaje 22 Octubre 2004, 12:10
por dragon_abraxas
Ayuda con 2 JFrame plz
Java
visualfree 3 3,914 Último mensaje 24 Abril 2009, 05:03
por visualfree
JFrame MDI
Java
[GB] 0 2,373 Último mensaje 23 Noviembre 2009, 23:34
por [GB]
JFrame « 1 2 »
Java
nerckos 10 5,571 Último mensaje 8 Mayo 2010, 15:58
por nerckos
Actualizar tamaño jFrame automaticamente
Java
andrex.125 2 844 Último mensaje 2 Mayo 2014, 07:32
por andrex.125
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines