He adaptado los códigos de los ejemplos de [GUIs de Java]. He vuelto a hacer la misma aplicación que en Primera aplicación con AWT, el de calcular el máximo común divisor, pero esta vez, en caso de que no se introduzcan números enteros en los campos de texto, no da error.
PruebaJFrame.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PruebaJFrame extends JFrame {
private int ancho = 300, alto = 170, altofila = 25;
Dimension entero, medio, tercio, cuarto;
private JLabel etiqueta1, etiqueta2, etiqueta3;
private JTextField numero1, numero2;
private JButton mcdCalc;
// configurar GUI
public PruebaJFrame()
{
super( "Calcular mcd" );
entero = new Dimension(ancho, altofila);
medio = new Dimension((int)Math.floor(ancho / 2),altofila);
tercio = new Dimension((int)Math.floor(ancho / 3),altofila);
cuarto = new Dimension((int)Math.floor(ancho / 4),altofila);
this.setResizable(false);
// obtener panel de contenido y establecer su esquema
Container contenedor = getContentPane();
contenedor.setLayout( new FlowLayout() );
etiqueta1 = new JLabel("Introduce un número: ");
etiqueta1.setPreferredSize(medio);
contenedor.add(etiqueta1);
numero1 = new JTextField(5);
numero1.setPreferredSize(medio);
contenedor.add(numero1);
etiqueta2 = new JLabel("Introduce un número: ");
etiqueta2.setPreferredSize(medio);
contenedor.add(etiqueta2);
numero2 = new JTextField(5);
numero2.setPreferredSize(medio);
contenedor.add(numero2);
mcdCalc = new JButton("Calcular mcd");
mcdCalc.setPreferredSize(medio);
contenedor.add(mcdCalc);
ManejadorMCD manejarmcd = new ManejadorMCD();
etiqueta3 = new JLabel("",JLabel.CENTER);
etiqueta3.setPreferredSize(entero);
contenedor.add(etiqueta3);
mcdCalc.addActionListener(manejarmcd);
setSize( ancho, alto );
setVisible( true );
} // fin del constructor
public static void main( String args[] )
{
JFrame.setDefaultLookAndFeelDecorated(true);
PruebaJFrame aplicacion = new PruebaJFrame();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
private class ManejadorMCD implements ActionListener
{
public void actionPerformed(ActionEvent evento)
{
try
{
etiqueta3.setText(String.valueOf(mcd(Integer.parseInt(numero1.getText()), Integer.parseInt(numero2.getText()))));
} catch (NumberFormatException e)
{
etiqueta3.setText("Introduzca números enteros, por favor");
}
}
}
private int mcd(int x, int y)
{
if (x % y == 0)
return y;
else
return mcd(y, x % y);
}
}
El resulstado:
0 comentarios:
Publicar un comentario