Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    [JAVA] Gestione di frame

    Cosi come accade in HTML avevo pensato di far la stessa cosa in java, ovvero:

    creo una finestra di JFrame che divido in 2 (sinistra e centro) con il BorderLayout.

    Ora, quando vado a spingere un pulsante (nella barra a sinistra) mi aspetto che nella parte centrale venga visualizzato il contenuto da me richiesto (ad esempio se schiaccio il pulsante 'Inserisci Cliente' mi aspetto che appaia un form dove inserire i dati) invece non appare nulla, resta presente il primo oggetto grafico che è stato istanziato di default.

    Vi allego un po' di codice:

    metodo relativo alla gestione della parte centrale del frame
    codice:
      public void barraCentro(int scelta)
      {
        barraCentrale = new JPanel();
        add(BorderLayout.CENTER,barraCentrale);
       
       switch (scelta)
       {
        
        case 0:
                   barraCentrale.add(new JButton("prova"));
                   break;
              
        case 1:
                  barraCentrale.add(new CreaCliente());
                  break;       
        
       }
        barraCentrale.setVisible(true);
    Classe della gestione dell'errore:
    codice:
    import java.awt.event.*;
    
    public class AscoltatorePulsante extends Avvio implements ActionListener
     {
      public void actionPerformed(ActionEvent e)
      {
       Object a = e.getSource();
         
        if (a == BarraSx.inserisciCliente)
        {
         System.out.println("Bottone premuto");
         Avvio.barraCentrale = null; // l'oggetto barraCentrale di tipo JPanel presente nella classe principale 'Avvio' è statico
          barraCentro(1); // metodo della classe 'Avvio'
        }
      }
     }
    Potete darmi una mano?

    tnx!

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    43
    Ciao
    prova a richiamare repaint() sul pannello e sul frame

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Ci avevo già provato, purtroppo non va

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    container.validate() dove container è il contenitore a cui hai aggiunto/tolto dei componenti nel layout.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Provo, grazie!!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Cosi intendi?

    codice:
    barraCentrale = new JPanel();
    add(BorderLayout.CENTER,barraCentrale);
       
     switch (scelta)
     {
      case 0:
                barraCentrale.add(new JButton("prova"));
                break;
              
        case 1:
                 barraCentrale.add(new CreaCliente());
                 barraCentrale.validate();
                 break;

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Intendo quando alteri il layout cioè aggiungi, togli, ecc.. componenti in un layout.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Si, ma dico il sorgente che ho postato è corretto??

    Perchè continua a non fungere, è chiaro che forse ho sbagliato a metterlo là.
    Ma allora dove dovrebbe essere messo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.