Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    6

    [JAVA] Cambiare schermata

    Aloha a tutti,
    mi sto avvicinando da un po' a Java e mi trovo nella situazione di voler creare un semplice programma con una interfaccia grafica.

    Il problema sta nel fatto che ho diverse "schermate" da visualizzare, ma non so come risolvere la cosa.

    Sostanzialmente io penso di fare così: Creo 1 classe per il mio JFrame e 1 classe per ogni pannello JPanel che sarebbero le varie schermate.

    Infine metto sul frame il pannello iniziale e da quello dovrei riuscire a:
    - togliere lo stesso pannello iniziale
    - mettere un nuovo pannello di un'altra classe

    Questa procedura dovrebbe essere svolta cliccando un pulsante che c'è sul pannello iniziale.

    Il problema in sintesi è creare delle 1 unico frame con differenti schermate, mi potete dare qualche consiglio?

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    72
    Nulla ti vieta di creare dei pannelli sovrapposti e renderli visibili o nasconderli a seconda delle necessità ma java ti offre una classe apposta e molto facile da usare JTabbedPane : è la classica suddivisione a schede tipica di molti programmi windows, credo che questa possa fare per te.

    Ciao.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2006
    Messaggi
    6
    Hum... no purtroppo quella classe non va bene, perchè crea un pannello con tante diverse schede, appunto come fa windows...

    A me serve invece trovare un modo per fare delle schermate successive, avevo pensato anche alla possibilità di mettere pannelli uno sull'altro, il problema è che quando rendo un pannello "invisibile" in realtà non mi compare il pannello che sta sotto, semplicemente scompare tutto quello che era nel pannello invisibile, restando comunque diciamo lo "sfondo" grigio del pannello.

    In più non mi è sembrata una buona idea mettere tanti pannelli uno sull'altro perchè appesantisce di parecchio tutta l'applicazione (contando anche un elevato numero di pannelli diversi).

    Qualche idea sul come fare schermate successive?

    Thanks

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    il problema è che quando rendo un pannello "invisibile" in realtà non mi compare il pannello che sta sotto, semplicemente scompare tutto quello che era nel pannello invisibile, restando comunque diciamo lo "sfondo" grigio del pannello.
    penso che il metodo dei pannelli sovrapposti sia il più adatto. Per mostrare e nascondere i pannelli devi gestirli tutti contemporaneamente nn solo uno.
    Se ad esempio hai 3 pannelli
    se vuoi far vedere il primo dovrai scrivere
    codice:
    panel1.setvisible(true);
    panel2.setvisible(false);
    panel3.setvisible(false);
    se poi vuoi vedere il secondo

    codice:
    panel1.setvisible(false);
    panel2.setvisible(true);
    panel3.setvisible(false);
    e così via...

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    72
    Originariamente inviato da Tteo
    Hum... no purtroppo quella classe non va bene, perchè crea un pannello con tante diverse schede, appunto come fa windows...
    Attenzione , in realtà tu crei tanti pannelli quante sono le schede , non un solo pannello.

    Comunque mi sembra di capire che ti serve un layout tipico dei programmi di installazione (a step) quarda questo programmino dovrebbe andarti bene.

    Non ti preccupare se i pannelli sono sovrapposti , se gestisci la visibilità java sa che , se fleggata la non visibilità , non deve neanche spendere cicli clock per disegnarla.

    codice:
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    
    import javax.swing.*;
    public class TestPanel {
    	static JFrame frame=new JFrame();
    	static JPanel p1=new JPanel();
    	static JPanel p2=new JPanel();
    	static JPanel p3=new JPanel();
    	static int pannelloInUso=2;
    	public static void main(String[] args) {
            
            JButton b1=new JButton("avanti 1");
            JButton b2=new JButton("avanti 2");
            JButton b3=new JButton("avanti 3");
            
            p1.add(b1);
            p2.add(b2);
            p3.add(b3);
    	  	
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setSize(600,300);
    		
    		frame.getContentPane().add(p2);
    		frame.getContentPane().add(p3);
    		frame.getContentPane().add(p1);
    		
    		b1.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent arg0) {
    				managerPannelli();
    				frame.repaint();
    				frame.validate();
    			}
    		});
    		b2.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent arg0) {
    				managerPannelli();
    				frame.repaint();
    				frame.validate();
    			}
    		});
    		b3.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent arg0) {
    				managerPannelli();
    			}
    		});
    		frame.show();
    	}
        public static void managerPannelli(){
        	
        	switch(pannelloInUso){
        	   case 1:
        		   frame.remove(p2);
        		   frame.remove(p3);
        		   frame.getContentPane().add(p1);
        		   
        	      break;
        	   case 2:
    	    		   frame.remove(p3);
    	    		   frame.remove(p1);
    	    		   frame.getContentPane().add(p2);
        	          
     	          break;    	
        	   case 3:
        		   frame.remove(p2);
        		   frame.remove(p1);
        		   frame.getContentPane().add(p3);
     	          break;   
        	}
        	frame.repaint();
    	frame.validate();
            pannelloInUso++;
            if(pannelloInUso>3){
            	pannelloInUso=1;
            }
        }
    }
    Attraverso la gestione della variabile pannelloInUso gestisci i tuoi pannelli.

    Ciao.

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Tteo il problema è che quando rendo un pannello "invisibile" in realtà non mi compare il pannello che sta sotto, semplicemente scompare tutto quello che era nel pannello invisibile, restando comunque diciamo lo "sfondo" grigio del pannello.
    hai provato a fare pannelloDaRendereTrasparente.setOpaque(true); ?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.