Bueno, yo lo hice de esta manera y de manera recursiva (OJO: Me falto validar con los bloques Try Catch para atrapar las excepciones)
Código (java) [Seleccionar]
package ejercicio1207;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Ventana extends JFrame implements ActionListener {
private JTextField campoTexto;
private JLabel resultado;
private JButton boton;
public Ventana(){
super("Calculadora de factorial");
setLayout(new FlowLayout());
campoTexto = new JTextField("Escriba aqui el numero...");
resultado = new JLabel("El factorial es: ");
boton = new JButton("Calcular");
add(campoTexto);
add(resultado);
add(boton);
boton.addActionListener(this);
setSize(350,80);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
int numero = Integer.parseInt(campoTexto.getText());
resultado.setText("El factorial es: " + Integer.toString(factorial(numero)));
}
public int factorial(int numero){
if(numero == 1){
return 1;
}
return numero * factorial(numero-1);
}
}