2010-05-06 61 views
24

Tengo un JFrame que tiene 3 JPanels en GridBagLayout ..Ajuste de tamaño mínimo para una ventana en Java Swing

Ahora, cuando puedo minimizar una ventana, después de un cierto límite, la tercera JPanel tiende a desaparecer. Intenté configurar el tamaño mínimo de JFrame usando setMinimumSize (new Dimension (int, int)) pero no tuve éxito. Las ventanas aún se pueden minimizar.

Así que, en realidad quieren hacer un umbral, que mi ventana no puede ser minimizado después de un cierto límite.

¿Cómo puedo hacer eso?

Código: -

import java.awt.Dimension; 

import javax.swing.JFrame; 

public class JFrameExample { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame("Hello World"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setMinimumSize(new Dimension(400, 400)); 
     frame.setVisible(true); 
    } 
} 

también:

[email protected]:~/java$ java --showversion 
java version "1.5.0" 
gij (GNU libgcj) version 4.4.1 

Copyright (C) 2007 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
Usage: gij [OPTION] ... CLASS [ARGS] ... 
      to invoke CLASS.main, or 
     gij -jar [OPTION] ... JARFILE [ARGS] ... 
      to execute a jar file 
Try `gij --help' for more information. 
[email protected]:~/java$ 

Me da salida como

alt text

** ACTUALIZACIÓN: ** Lo mismo cuando se ejecuta aunque el IDE Netbeans da salida esperada .. Cuando corro el compilador "java JFrameExample", me enfrento problemas ... Ahora, ¿qué significa eso?

+1

¿En qué plataforma está y qué versión de Java está usando? –

+0

java 6 en ubuntu 9.10 –

+0

¿conoces el número de actualización específico de tu java 6? Escriba 'java -version' y debería ver algo como: versión java "1.6.0_18", 18 sería la actualización #. Es posible que haya un error que solo se corrige en una versión posterior de java 6 –

Respuesta

30

El documentation me dice que este comportamiento depende de la plataforma. Especialmente, ya que el siguiente código de ejemplo funciona para mí como se desee en Windows Vista:

import java.awt.Dimension; 

import javax.swing.JFrame; 

public class JFrameExample { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame("Hello World"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setMinimumSize(new Dimension(100, 100)); 
     frame.setVisible(true); 
    } 
} 
+0

También funciona para mí (en Ubuntu 9, java 6, gnome). – aioobe

+0

Estoy en Ubuntu 9.10, Java 6, Gnome ... No funciona para mí ... Espero que estés seguro de mi pregunta. No quiero que mi Windows se minimice después de un cierto umbral ... –

+0

Funciona en Ubuntu 14.04, Java 7, Gnome/Unity. –

6

Hay en realidad es una forma de asegurar mínimo en cualquier plataforma. Debe establecer el tamaño mínimo del JFrame en el tamaño mínimo de su panel de contenido y luego debe escribir un ComponentAdapter y anular el componenteResized. Luego solo usa getSize y getMinimum size en su JFrame y sustituya el ancho y/o alto con el ancho o alto mínimo si es mayor. Asumiendo que está extendiendo JFrame:

this.addComponentListener(new ComponentAdapter(){ 
     public void componentResized(ComponentEvent e){ 
      Dimension d=YourJFrame.this.getSize(); 
      Dimension minD=YourJFrame.this.getMinimumSize(); 
      if(d.width<minD.width) 
       d.width=minD.width; 
      if(d.height<minD.height) 
       d.height=minD.height; 
      YourJFrame.this.setSize(d); 
     } 
    }); 
+0

'frame.addComponentListener (nuevo ComponentAdapter() { \t @ Override public void componentResized (ComponentEvent e) { dimensión d = frame.getSize(); Dimensión mente = marco.getMinimumSize(); if (d.width Dónde trama se declara como miembro de la clase' marco de JFrame privado; ' [Código de demostración, deberá descargar] (https://ideone.com/i9AYBf) – Abhijeet

Cuestiones relacionadas