2012-02-27 6 views
5

Desidero impostare la dimensione massima di JFrame durante l'avvio dell'applicazione. Il problema è che se la risoluzione dello schermo è maggiore, il mio frame sta diventando più grande, ma a quel punto non dovrebbe superare il range massimo definito, ma lo stesso caso funziona bene con una bassa risoluzione.Impostazione della dimensione massima di un JFrame durante il lancio dell'applicazione

come voglio il mio telaio per essere di un massimo di (500.500), così ho scritto questo pezzo di codice:

JFrame frame = new JFrame("FRAME TRANSPARENT"); 
frame.setSize((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth()-50), (int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight()-150)); 
frame.setMaximizedBounds(new Rectangle(0,0 , 500, 500)); 
frame.setVisible(true); 

Anche io impostare il Bound, il JFrame sta prendendo in considerazione il metodo setSize e sembra di essere che sta trascurando il metodo setMaximizedBounds. Ho già provato con il metodo setMaximumized ma ho ottenuto lo stesso risultato.

+1

Perché "setMaximizedBounds' anziché" setMaximumSize'? – wchargin

risposta

6

ho provato e sei così giusto che setMaximumSize() non funziona .. in tutti questi anni non hanno potuto arrivare a sapere che !!! Per lo più le mie esigenze di dimensione limite è fissato dal setResizable(false), anche se vedo che hai domanda specifica di dimensioni minime e massime di essere diversi

lavorato su una soluzione per voi però:

public class MaxSizeUI 
{ 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new MaxSizeUI().makeUI(); 
      } 
     }); 
    } 

    public void makeUI() { 
     final JFrame frame = new JFrame("Sample Fram") { 

      @Override 
      public void paint(Graphics g) { 
       Dimension d = getSize(); 
       Dimension m = getMaximumSize(); 
       boolean resize = d.width > m.width || d.height > m.height; 
       d.width = Math.min(m.width, d.width); 
       d.height = Math.min(m.height, d.height); 
       if (resize) { 
        Point p = getLocation(); 
        setVisible(false); 
        setSize(d); 
        setLocation(p); 
        setVisible(true); 
       } 
       super.paint(g); 
      } 
     }; 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(300, 150); 
     frame.setMaximumSize(new Dimension(400, 200)); 
     frame.setMinimumSize(new Dimension(200, 100)); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 
+0

Questo rende lo sfarfallio dello schermo sullo schermo quando raggiunge la larghezza o l'altezza massima. In alcuni casi, entra in un ciclo infinito nascondendosi e risospendendo. –

0

uso dimensione
Dimension d=getMaximumSize(); Frame.setSize(d.width, d.height);

2

Una delle possibili soluzioni è:

Dimension DimMax = Toolkit.getDefaultToolkit().getScreenSize(); 
frame.setMaximumSize(DimMax); 

frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
Problemi correlati