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

    Prendere le dimensioni della finestra dopo un pack() per centrarla allo schermo

    salve,
    utilizzo questo metodo per centrare le finestre:

    codice:
    public void FinestraCentrata(Dimension d)
        {
            this.getLocation();
            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
               Rectangle maxSize = ge.getMaximumWindowBounds();
               
               this.setBounds((int)(maxSize.width - DimensioneFinestra.width) / 2, (int)(maxSize.height - DimensioneFinestra.height) / 2, DimensioneFinestra.width, DimensioneFinestra.height);
            this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);    
        }
    ed a Dimension gli passo le dimensioni in questo modo per ogni panel che devo aggiornare:

    codice:
    add(refreshPanel);
             refreshPanel.repaint();
             refreshPanel.validate();
             pack();
             DimensioneFinestra = new Dimension();
             DimensioneFinestra = this.getSize();
             FinestraCentrata(DimensioneFinestra);
    però non mi funziona bene in particolare con una finestra la quale non viene centrata. Mentre con le altre finestre con lo stesso metodo funziona perfettamente

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Non sarebbe più semplice usare il metodo setLocationRelativeTo?
    Basterebbe richiamare:
    codice:
    tuoJFrame.setLocationRelativeTo (null);
    e come dice la documentazione: "If the component is null, or the GraphicsConfiguration associated with this component is null, the window is placed in the center of the screen. The center point can be obtained with the GraphicsEnvironment.getCenterPoint method."

    fonti: http://docs.oracle.com/javase/7/docs...t.Component%29

  3. #3
    il mio è un JPanel invece con il metodo che mi hai segnalato tu lo posso utilizzare solo con il frame...

  4. #4
    Ti faccio capire meglio forse non mi sono espresso bene... Io ho un metodo che mi crea una JPanel:
    codice:
    public JPanel createNonAcquistabiliPanel()
        {
            refreshPanel.removeAll();
            refreshPanel.add(prodottiArea);
            add(refreshPanel);
            refreshPanel.repaint();
            refreshPanel.validate();
            pack();
            DimensioneFinestra = new Dimension();
            DimensioneFinestra = this.getSize();
            FinestraCentrata(DimensioneFinestra);
            return refreshPanel;
        }
    Questo metodo lo richiamo nel listener di un pulsante.
    Io voglio che quando mi fa il pack() si prenda le nuove dimensioni che il pack ha dato alla finestra che mi serviranno poi nel metodo CentraFinestra che ho postato prima... Il tutto è fatto in una classe che estende JFrame.
    Ripeto che mi da il problema solo con questo particolare pannell0, mentre con gli altri non mi da problemi e non capisco il motivo...
    Ultima modifica di Cyber-X91!; 26-02-2014 a 15:35

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Cyber-X91! Visualizza il messaggio
    il mio è un JPanel invece con il metodo che mi hai segnalato tu lo posso utilizzare solo con il frame...
    Tu hai chiesto "centrare le finestre" e setLocationRelativeTo(null) fa proprio questo: "centra" una finestra sullo schermo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Ho capito, ma tu forse non hai capito il mio problema.. l'ho spiegato sopra...

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Cyber-X91! Visualizza il messaggio
    Io voglio che quando mi fa il pack() si prenda le nuove dimensioni che il pack ha dato alla finestra che mi serviranno poi nel metodo CentraFinestra che ho postato prima...
    Quindi dopo il pack() vuoi ri-centrare la finestra sullo schermo (ovviamente basandosi sulla modifica delle dimensioni che pack ha causato)?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.