9
1. Centrar un JFrame/JDialog en pantalla 11Feb08 Al crear un nuevo JFrame ó JDialog en Swing, al hacerlos visibles estos aparecerán arriba a la izquierda de nuestra pantalla. Por ejemplo si realizamos: 1. import javax.swing.JFrame; 2. 3. public class Prueba{ 4. public static void main(String[] args){ 5. 6. JFrame frame = new JFrame("Prueba JFrame"); 7. frame.setSize(500, 500); 8. frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE) ; 9. frame.setVisible(true); 10. } 11. } al ejecutarlo, veremos como resultado así:

Cosas de Java

Embed Size (px)

Citation preview

Page 1: Cosas de Java

1. Centrar un JFrame/JDialog en   pantalla

11Feb08

Al crear un nuevo JFrame ó JDialog en Swing, al hacerlos visibles estos aparecerán arriba a la izquierda de nuestra pantalla. Por ejemplo si realizamos:

1. import javax.swing.JFrame;  2.   3. public class Prueba{  4.    public static void main(String[] args){  5.   6.       JFrame frame = new JFrame("Prueba JFrame");  7.       frame.setSize(500, 500);  8.      frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);  9.       frame.setVisible(true);  10.    }  11. }  

al ejecutarlo, veremos como resultado así:

Page 2: Cosas de Java

Si ahora especificamos por medio del método setLocationRelativeTo a null, la ventana se posicionará en el medio de la pantalla. Por lo que si agregamos la siguiente linea:

1. import javax.swing.JFrame;  2.   3. public class Prueba{  4.    public static void main(String[] args){  5.   6.       JFrame frame = new JFrame("Prueba JFrame");  7.       frame.setSize(500, 500);  8.       frame.setLocationRelativeTo(null);  9.      frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);  10.       frame.setVisible(true);  11.    }  12. }  

endremos un resultado similar a este:

Centrar JDialog en JFrame

Si lo que deseamos es centrar un JDialog en el JFrame “padre”, lo que hacemos es usar el mismo método, pero esta vez especificando que la posicioón de apertura del JDialog será con respecta al JFrame:

Page 3: Cosas de Java

view plain copy to clipboard print ?

1. import javax.swing.JFrame;  2.   3. public class Prueba{  4.    public static void main(String[] args){  5.   6.       JFrame frame = new JFrame("Prueba JFrame");  7.       frame.setSize(500, 500);  8.       frame.setLocationRelativeTo(null);  9.   10.       final JButton boton = new JButton("Abrir Dialogo");  11.       boton.addActionListener(new ActionListener() {  12.          public void actionPerformed(ActionEvent e) {  13.             JDialog dialogo = new JDialog(frame);  14.             dialogo.setSize(100, 100);  15.             dialogo.setLocationRelativeTo(frame);  16.             dialogo.setVisible(true);  17.          }  18.       });  19.   20.       frame.add(boton);  21.      frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);  22.       frame.setVisible(true);  23.    }  24. }  

los que no da como resultado al hacer click:

Espero les sea de utilidad.

Hasta la próxima.

Page 4: Cosas de Java

2. Iniciar maximizado o minimizado un   JFrame

18Feb08

Para iniciar maximizado un JFrame lo que realizamos es setearle mediante setExtendedState()

el estado en que queremos que aparezca al realizarle un setVisible(true).

Para ello utilizamos la constante JFrame.MAXIMIZED_BOTH de la siguiente forma:

1. import javax.swing.JFrame;  2.   3. public class MaximizarJFrame{  4.     public static void main(String[] args) {  5.         final JFrame frame = new JFrame("Prueba JFrame");  6.   7.         frame.setExtendedState(JFrame.MAXIMIZED_BOTH);  8.   9.        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);  10.         frame.setVisible(true);  11.     }  12. }  

además podemos indicarle otras opciones:

JFrame.NORMAL: Inicializa el JFrame en estado Normal JFrame.ICONIFIED: Inicializa el JFrame en estado Minimizado. JFrame.MAXIMIZED_HORIZ: Inicializa el JFrame en estado Maximizado

Horizontalmente JFrame.MAXIMIZED_VERT: Inicializa el JFrame en estado Maximizado

Verticalmente JFrame.MAXIMIZED_BOTH: Inicializa el JFrame en estado Maximizado en

ambos sentidos

Hasta la proxima.

Page 5: Cosas de Java

3. Rotando una imagen a través de   java.awt.geom.AffineTransform

30May08

Mediante AffineTransform se puede rotar una imagen dibujada sobre un Graphics.Esto se debe a que en realidad AffineTransform agrega una transformada al objeto Graphipcs.

Para rotar se pasa a una instancia de AffineTransform a través de rotate(), pasándole el ángulo en radianes y el centro de rotación. Luego esta instancia se asigna al objeto Graphics (debemos asignársela a Graphics2D en realidad)

view plain copy to clipboard print ?

1. AffineTransform at = new AffineTransform();  2. at.rotate(r, 100, 100); //se asigna el angulo y centro de rotacion  3. ((Graphics2D) g).setTransform(at);  

Ejemplo

Por ejemplo creamos un panel que muestra un cuadrado girado una determinada cantidad de grados llamada JPanelImagenGiratoria.java:

view plain copy to clipboard print ?

1. import java.awt.Color;  2. import java.awt.Graphics;  3. import java.awt.Graphics2D;  4. import java.awt.geom.AffineTransform;  5.   6. public class JPanelImagenGiratoria extends javax.swing.JPanel {  7.   8.     private int grados = 0;  9.   10.     public int getGrados() {  11.         return grados;  12.     }  13.   14.     public void setGrados(int grados) {  15.         this.grados = grados;  16.         repaint();  17.     }  18.   19.     @Override  

Page 6: Cosas de Java

20.     public void paint(Graphics g) {  21.         super.paint(g); //se borra el contenido anterior  22.   23.         double r = Math.toRadians(grados); //se convierte a radianes lo grados  24.   25.         AffineTransform at = new AffineTransform();  26.         at.rotate(r, 100, 100); //se asigna el angulo y centro de rotacion  27.         ((Graphics2D) g).setTransform(at);  28.   29.         //se dibuja  30.         g.setColor(Color.BLUE);  31.         g.drawRect(50, 50, 100, 100);  32.   33.     }  34. }  

y un frame para realizar la prueba del panel llamada PruebaPanel.java. Prestar atención al observador de cambios del JSlider agregado mediante addChangeListener():view plain copy to clipboard print ?

1. import java.awt.BorderLayout;  2. import javax.swing.JFrame;  3. import javax.swing.JSlider;  4.   5. public class PruebaPanel{  6.   7.     public static void main(String[] args) {  8.         final JFrame jf = new JFrame("Prueba Imagen Giratoria");  9.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  10.         jf.setSize(200, 250);  11.   12.         final JPanelImagenGiratoria ig = new JPanelImagenGiratoria();  13.   14.         final JSlider js = new JSlider(0, 360);  15.         js.addChangeListener(new javax.swing.event.ChangeListener() {  16.   17.             public void stateChanged(javax.swing.event.ChangeEvent evt) {  18.                 ig.setGrados(js.getValue());  19.             }  20.         });  21.         js.setValue(0);  22.   23.         jf.setLayout(new BorderLayout());  24.         jf.add(ig, BorderLayout.CENTER);  25.         jf.add(js, BorderLayout.SOUTH);  26.   27.         jf.setLocationRelativeTo(null);  

Page 7: Cosas de Java

28.         jf.setVisible(true);  29.     }  30. }  

Imágenes: