Upload
jose-ponte-sagastegui
View
80
Download
2
Embed Size (px)
Citation preview
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í:
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:
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.
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.
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
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);
28. jf.setVisible(true); 29. } 30. }
Imágenes: