2012-02-27 55 views
5

Uygulamayı başlatırken JFrame'in Maksimum boyutunu ayarlamak istiyorum. Sorun şu ki, ekran çözünürlüğü daha çok çerçevem ​​büyüyorsa, ancak o zaman tanımlanan maksimum aralığı geçmemeli, aynı durum düşük çözünürlükle iyi çalışıyor.Uygulamayı başlatırken bir JFrame'in maksimum boyutunu ayarlama

benim çerçevesi (500,500) ait Maksimum ait olmak istiyorum gibi, bu yüzden bu kod parçası yazdı:

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); 

Hatta ben Bound set, JFrame setSize yöntemi düşündüğü ve bu gibi görünüyor setMaximizedBounds yöntemini ihmal ediyor. Zaten setMaximumized yöntemiyle denedim, ancak aynı çıktıyı aldım.

+1

Neden "setMaximumSize" yerine setMaximizedBounds '? – wchargin

cevap

6

Ben denedim ve setMaximumSize() bütün bu yıllar olduğunu bilmek alamadım .. çalışmıyor böylece haklısın !!!

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

Bu, çerçevenizin maksimum genişlik veya yüksekliğe ulaştıkça ekranda titremesini sağlar. Bazı durumlarda, kendisini gizleyen ve tekrar tekrar gösteren sonsuz bir döngü içine girer. –

0

kullanım boyut
Dimension d=getMaximumSize(); Frame.setSize(d.width, d.height);

2

olası bir çözüm: Ben size

olsa sizin için bir çözüm üzerinde çalıştı farklı olmak minimum ve maksimum boyutları belirli bir sorgu görmeme karşın Çoğunlukla sınırlayıcı boyutta benim gereksinimleri setResizable(false) tarafından sabitlenmiştir:

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

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);