Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Aiuto Java Swing

    VORREI SAPERE IL CODICE CHE DEVE CONTENERE UN ACTIONLISTENER DI UN BOTTONE PER RENDERE LA FUNZIONE DI ESSO IDENTICA A QUELLA DELLA X (CHIUSURA FINESTRA)

    CON IL SETVISIBLE NON MI VA MI RIMANE IL JPANEL TUTTO GRIGIO APERTO..

    POSTO UN MINIMO DI CODICE PER FAR CAPIRE COSA VORREI

    public class pag1 extends JFrame
    {
    int altezza = 768;
    int larghezza = 1024;

    public pag1()
    {
    //PANNELLO
    final JPanel panel = new JPanel();
    panel.setLayout(null);
    setTitle("GIOCO");
    setSize(larghezza,altezza);

    JLabel scritta = new JLabel("SCEGLI IL GIOCO CHE VUOI FARE");
    scritta.setFont(new java.awt.Font("", 1, 30));
    scritta.setBounds(300,50,500,100);
    panel.add(scritta);

    //BOTTONE
    /* BOTTONE test */
    JButton quiz = new JButton("QUIZ");
    quiz.setEnabled(true);
    quiz.setBounds(420,200,250,80);
    quiz.setFont(new java.awt.Font("", 1, 30));
    panel.add(quiz);
    quiz.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    try
    {
    VORREI CHE ADESSO MI SI APRISSE IL PANNELLO NUOVO MA CHIUDERE QUESTO!|!!
    final Calcola ris = new Calcola();
    Quiz q = new Quiz(ri
    q.setVisible(true)


    }
    catch(Exception e1){}
    }
    });


    GRAZIE MILLE PER L'AIUTO

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Benvenuto nel forum.
    Per prima cosa ti invito a leggere il Regolamento che trovi tra i link in rilievo in questa sezione.

    Poi, correggo il titolo che non è conforme: il titolo deve riassumere il problema trattato nella discussione...


    Altra cosa: il codice che posti inseriscilo tra i tag [*CODE] e [*/CODE] (senza l'asterisco rosso che ho aggiunto io), così rimane indentato ed è più leggibile.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Per nasconcdere un pannello devi usare setVisible( false ); e per rendere questa modifica visibile anche a video devi forzare un refresh utilizzando il metodo validate() sul componente che contiene il pannello appena nascosto (una finestra, immagino).

    In alternativa puoi utilizzare il metodo remove() che ha l'effetto contrario al metodo add(), sempre sul contenitore del pannello e sempre richiamando un validate() successivamente.



    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Grazie per avermi risposto innanzitutto... ho provato quello che dici te ma non funziona..mi rimane la finestra grigia in background... guarda cosa ho scritto

    codice:
    JButton quiz = new JButton("QUIZ");
    	quiz.setEnabled(true);
    	quiz.setBounds(420,200,250,80);
    	quiz.setFont(new java.awt.Font("", 1, 30)); 
    	panel.add(quiz);
    	quiz.addActionListener(new ActionListener()
    		{
    			public void actionPerformed(ActionEvent e)
    			{
    				try
    				{
    			final Calcola ris = new Calcola();
    			Quiz q = new Quiz(ris);
    			q.setVisible(true);								panel.setVisible(false);
    			panel.validate();
    								                     //getContentPane().removeAll();
    								                    //getContentPane().validate();
    	 							
    								
    			}
    						catch(Exception e1){}
    					}

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Il metodo validate() non va richiamato sul pannello che hai appena reso invisibile, ma sull'oggetto che lo contiene.


    PS: Il tag di chiusura corretto è [*/CODE] e non [\CODE] (l'ho corretto io).
    PPS: Cerca di indentare meglio il codice, altrimenti anche i benefici dei tag CODE si perdono.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Ok...cmq non funziona ancora..

    allora panel è quello che voglio chiudere, e q è quello che voglio rendere visibile...
    [CODE]
    Quiz q = new Quiz(ris);
    q.setVisible(true);
    panel.setVisible(false);
    getContentPane().validate();
    [\CODE]

    me lo scrivi tu per favore senno spacco lo schermo :-)

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Allora, come da me prima suggerito:
    1) Nascondi il pannello con setVisible(false)
    2) Richiama validate() sulla finestra (non serve farlo sul ContentPane(), fallo direttamente sul frame)
    3) Crea il nuovo pannello
    4) Aggiungi il pannello alla finestra (altrimenti non lo vedrai mai)
    5) Richiama di nuovo validate()

    Questo è un pezzettino di codice di un mio programma che fa esattamente quello che cerchi di fare tu:
    codice:
    getContentPane().remove( at );   // at è il tuo pannello da rimuovere
    validate();
    getContentPane().add( nuovoPannello );   // nuovoPannello è quello nuovo da visualizzare
    validate();
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    public class pag1 extends JFrame
    {
    final JPanel panel = new JPanel();
    panel.setLayout(null);
    setTitle("GIOCO");
    setSize(larghezza,altezza);
    JButton quiz = new JButton("QUIZ");
    quiz.setEnabled(true);
    quiz.setBounds(420,200,250,80);
    quiz.setFont(new java.awt.Font("", 1, 30));
    panel.add(quiz);
    quiz.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    try
    {
    final Calcola ris = new Calcola();

    getContentPane().remove(panel);
    validate();

    Quiz q = new Quiz(ris);
    getContentPane().add(q);
    validate();

    public static void main (String[] args)
    {
    pag1 pag = new pag1();
    pag.setVisible(true);
    }


    COSI NON MI VA..ORA SPACCO QUALCOSA..AIUTAMI L'ULTIMA VOLTA TI PREGO..SECONDO ME E' UN PROBLEMA RELATIVO ALLA DISLOCAZIONE DEI PANNELLI.. HO UNA CLASSE PRINCIPALE CON IL MAIN E DAI BOTTONI SI PASSA AI FRAME DIVERSI... BOH DIMMI QUALCOSA TU

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.