Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > al Maximizar, maximizar JFrame solo verticalmente

que codigo puedo poner para que cuando maximice un Jframe este se maximice solo verticalmente

junio 14, 2012 | Unregistered CommenterNo One

Es más que conveniente leer el API, en este caso del JFrame, antes de buscar soluciones "externas".

http://download.java.net/jdk7/archive/b123/docs/api/java/awt/Frame.html#setExtendedState(int)

http://docs.oracle.com/javase/7/docs/

junio 14, 2012 | Registered Commenterchoces

sin pasar por lo q dice choces...

podes pasarle el alto maximo que queres, entonces no te va a maximizar el alto, sino solo el ancho.

busca por setMaximun y setMinimun

junio 14, 2012 | Unregistered Commentersip

si pudieran poner la solucion se los agradeceria porque no tengo acceso a otras paginas
y no me sirvio lo que dice sip ,no pincha
tengo un codigo que investigue trasteando pero no es lo mejor poquer si maximiza la ventana verticalmente pero en realidad maximiza la ventana en ambas direcciones y en cuestiones de milesimas es que la maximiza verticalmente , no se si se me entiende.
el codigo lo hice en el netbeans por propiedades del jframe>Events>WindowStateChanged
el codigo es el siguiente :
private void maximizarVerticalmente(java.awt.event.WindowEvent evt) {
if (evt.getOldState() == JFrame.NORMAL & evt.getNewState() == JFrame.MAXIMIZED_BOTH) {
this.setExtendedState(JFrame.MAXIMIZED_VERT);
}if (evt.getOldState() == JFrame.MAXIMIZED_VERT & evt.getNewState() == JFrame.MAXIMIZED_BOTH) {
this.setExtendedState(JFrame.NORMAL);
}
}

junio 15, 2012 | Unregistered CommenterNo One

Puesto que setExtendedState depende del Sistema Operativo, y puede no funcionar según lo esperado...

public Rectangle getUsableWindowBounds(final Window window) {
final Window owner = window.getOwner();
return getUsableScreenBounds(owner == null ? GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration() : owner.getGraphicsConfiguration());
}

public Rectangle getUsableScreenBounds(final GraphicsConfiguration gc) {
final Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc);
final Rectangle bounds = gc.getBounds();
bounds.x += insets.left;
bounds.y += insets.top;
bounds.width -= insets.left + insets.right;
bounds.height -= insets.top + insets.bottom;
return bounds;
}

public Rectangle getUsableScreenBounds() {
return getUsableScreenBounds(GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration());
}

Con uno de esos tres métodos se puede determinar el espacio útil de la pantalla: espacio que queda después de descontar el ocupado por barras de tareas y similares).

Una vez conocido el rectángulo útil de la pantalla, se puede usar el método setPrefrerredSize del JFrame para maximizar sólo el eje Y (height), dejando como esté el eje X (width) del JFrame.
En tu caso, creo que el último sería el más fácil de usar y el más indicado.

Nota: aunque parte del código no "se ve completo", al copiar y pegar se recupera por entero.

junio 15, 2012 | Registered Commenterchoces