Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24

Discussione: Resize JPanel

  1. #1

    Resize JPanel

    Salve ragazzi,

    ho creato un JPanel che implementa ComponentListener.

    public class MainPanel2 extends JPanel implements ComponentListener{
    .....
    ....


    ovviamente ho dovuto scrivere anche i metodi

    codice:
    public void componentHidden(ComponentEvent e) {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void componentMoved(ComponentEvent e) {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void componentResized(ComponentEvent e) {
    		// TODO Auto-generated method stub
    		reseizeComponent(this.getSize());
    	}
    
    	@Override
    	public void componentShown(ComponentEvent e) {
    		// TODO Auto-generated method stub
    		
    	}

    ho implementato solo il metodo componentResized.

    In pratica ogni qual volta ridimensiono il JPanel, vorrei ridimensionare alcuni componenti.

    il metodo resizeComponent è questo:

    codice:
    public void reseizeComponent(Dimension d){
    		dTabella = new Dimension();
    		dTabella.setSize(dimensioneComponenti.jScrollPane2(d));
    		
    		jScrollPane2.setPreferredSize(dTabella);
    		jScrollPane2.setViewportView(ricetteTabella);
    		 jScrollPane2.getViewport().add(ricetteTabella);
    		fonButtonT = new Font("Century Gothic",Font.PLAIN, 5);
    		ricetteTabella.setFont(fonButtonT);
    		getRootPane().validate();
    		getRootPane().repaint();
    		jScrollPane2.revalidate();
    		jScrollPane2.repaint();
    		ricetteTabella.validate();
    		ricetteTabella.repaint();
    		
    		ricetteTabella.updateUI();
    		
    		panel1.repaint();
    		System.out.println("metodo preso "+d);
    	}
    allora passo la dimensione nuova del JPanel è questa è corretta.
    Poi ridimensiono un jScrollPane2 che contiene un jtable. il quale dovrebbe rimpizziolirsi ma questo non accade il metodo viene eseguito senza generare errori però non cambia nulla.

    cosa sbaglio?

  2. #2
    ragazzi, nessuno mi può aiutare???

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non basta un repaint del contenitore:

    codice:
    panel.doLayout();
    panel.validate();
    panel.repaint();
    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
    ma il JPanel è il mio contenitore

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da bircastri
    ma il JPanel è il mio contenitore
    Sì... ma non basta un repaint, è necessario richiamare anche un doLayout() e un validate(), prima del repaint.


    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
    speriamo funga.

    Appena rientro a casa controllo.

    Un' ultima cosa. mi potreste segnalare un link ad un esempio corretto ove trovare un esempio di una applicazione che abbia, Jmenu, che cambia vari JPanel al suo interno?

    Perchè sevcondo me sbaglio nell'utilizzo dei layout.

  7. #7
    salve ragazzi,

    allora ho provato a fare come mi hai detto, purtroppo non funziona.

    Non refrescia la pagina.

    Cioè se provo ad assegnare alla tabella un font diverso, tipo se ridimensiono il frame esterno voglio che deve assegnare font di 4 px non fa nulla.

    secondo me sbaglio proprio nell'utilizzo dei layout.

    Mi sapete dare qualche consiglio?

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    A me resta da capire se questi componenti che tu intendi ridimensionare sono inseriti in un container gestito da un LayoutManager oppure no.

    Se i componenti sono gestiti da un LayoutManager, c'è poco da fare: non ti ascolteranno perchè è così che le cose devono funzionare.

    Se vuoi avere il controllo sulle dimensioni/posizioni dei componenti, questi devono essere posizionati all'interno di un contenitore privo di LayoutManager. A quel punto hai il totale controllo (che è una cosa bella, ma onerosa!).


    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

  9. #9
    ah ecco allora il problema secondo me è proprio questo.

    Io metto questi componenti dentro un JPanel.

    Il JPanel lo gestisco con GridBagLayout come layoutManager.

    Cosa posso usare al posto di questo layoutmanager?

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da bircastri
    ah ecco allora il problema secondo me è proprio questo.

    Io metto questi componenti dentro un JPanel.

    Il JPanel lo gestisco con GridBagLayout come layoutManager.

    Cosa posso usare al posto di questo layoutmanager?
    Se vuoi avere il controllo su posizione e dimensione dei componenti, non devi utilizzare alcun LayoutManager:

    codice:
    tuoPanel.setLayout( null );
    Questo comporta, da parte tua, l'onere di specificare posizione e dimensione di tutti i componenti in esso contenuti.


    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

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.