- Pruebe cada uno de los LOOKANDFEEL del programa. Que clase usan?
- Agregue un segundo boton (boton2) y un segundo label (label2) al programa pero cuyo contador (numClicks2) inicie en 1000 y se decremente con cada clic al boton2.
- Modifique el layout del contenedor:
LayoutManager layout = new GridLayout(0, 2);
LayoutManager layout = new FlowLayout();
SwingMain.java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SwingMain { //Indicar que look and feel se usara en la aplicacion. //Los valores de LOOKANDFEEL seran: // null (por defecto), "Metal", "System", "Motif" y "GTK+" final static String LOOKANDFEEL = "Metal"; public static void main(String[] args) { //Enviar una tarea al administrador de eventos //para que cree y muestre la ventana SwingUtilities.invokeLater ( new Runnable() { public void run() { crearMostrarVentana(); } } ); } // Metodo para crear una ventana GUI. private static void crearMostrarVentana() { //Configura el LAF. iniciarLookAndFeel(); //Asegurarse que contenga los decorators de una ventana. JFrame.setDefaultLookAndFeelDecorated(true); //Crear y configurar la ventana JFrame frame = new JFrame("SwingMain"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Agregar un panel que contiene un label y un boton SwingContent contenido = new SwingContent(); Component panel = contenido.crearComponentes(); frame.getContentPane().add(panel); //Mostrar la ventana frame.pack(); frame.setVisible(true); } private static void iniciarLookAndFeel() { // Clase java que administra el LAF. String claseLAF = null; if (LOOKANDFEEL != null) { if (LOOKANDFEEL.equals("Metal")) { // retorna la clase del LAF propio del Java claseLAF = UIManager.getCrossPlatformLookAndFeelClassName(); } else if (LOOKANDFEEL.equals("System")) { // retorna la clase del LAF de windows claseLAF = UIManager.getSystemLookAndFeelClassName(); } else if (LOOKANDFEEL.equals("Motif")) { claseLAF = "com.sun.java.swing.plaf.motif.MotifLookAndFeel"; } else if (LOOKANDFEEL.equals("GTK+")) { claseLAF = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel"; } else { System.err.println("Ha indicado un LOOKANDFEEL incorrecto : " + LOOKANDFEEL); claseLAF = UIManager.getCrossPlatformLookAndFeelClassName(); } System.out.println("Clase LAF usada : "+claseLAF); try { // UIManager es el administrador LAF // el metodo configura el LAF de la aplicacion UIManager.setLookAndFeel(claseLAF); } catch (ClassNotFoundException e) { System.err.println("No se encontro la clase para el LAF:" + claseLAF); System.err.println("Ha incluido la libreria en classpath?"); System.err.println("Se usara LAF por defecto."); } catch (UnsupportedLookAndFeelException e) { System.err.println("No se puede usar el LAF indicado (" + claseLAF + ") en esta plataforma."); System.err.println("Se usara LAF por defecto."); } catch (Exception e) { System.err.println("Se tiene problemas al usar el LAF (" + claseLAF + ")"); System.err.println("Se usara LAF por defecto."); e.printStackTrace(); } } } } SwingContent.java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SwingContent { //Contador de clicks en el boton. private int numClicks = 0; //Componentes de la aplicacion. private JButton boton; private JLabel label; public Component crearComponentes() { //Creando los componentes de la ventana label = new JLabel("Soy un label Swing!"); boton = new JButton("Soy un boton Swing!"); //Se agrega una tecla rapida ALT+S boton.setMnemonic(KeyEvent.VK_S); //Se agrega un manejador de eventos BotonListener listener = new BotonListener(); boton.addActionListener(listener); //Opcionalmente se enlaza el label al boton label.setLabelFor(boton); //Se crea un layout para los componentes LayoutManager layout = new GridLayout(0, 1); JPanel panel = new JPanel(layout); //Se agrega los componentes al panel. panel.add(boton); panel.add(label); //Se agrega un borde vacio alrededor de los componentes. panel.setBorder(BorderFactory.createEmptyBorder( 30, //arriba 30, //izquierda 10, //abajo 30) //derecha ); return panel; } //Clase interna que es un listener de eventos. public class BotonListener implements ActionListener { public void actionPerformed(ActionEvent e) { numClicks++; label.setText("Cantidad de clicks : " + numClicks); } } }
0 comentarios:
Publicar un comentario