You are on page 1of 7

1.

Centrar un JFrame/JDialog en pantalla


11Feb08 Al crear un nuevo JFrame JDialog en Swing, al hacerlos visibles estos aparecern 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:

Si ahora especificamos por medio del mtodo 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 mtodo, pero esta vez especificando que la posicion de apertura del JDialog ser con respecta al JFrame:

view plaincopy to clipboardprint? 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 prxima.

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. }

adems podemos indicarle otras opciones:


y y y y y

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.

3. Rotando una imagen a travs 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 travs de rotate(), pasndole el ngulo en radianes y el centro de rotacin. Luego esta instancia se asigna al objeto Graphics (debemos asignrsela a Graphics2D en realidad) view plaincopy to clipboardprint? 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 plaincopy to clipboardprint? 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 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 atencin al observador de cambios del JSlider agregado mediante addChangeListener(): view plaincopy to clipboardprint? 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); 28. jf.setVisible(true); 29. } 30. } Imgenes:

You might also like