import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FibStuck extends JFrame implements ActionListener {
    private JTextField numField, seqField;
    private JButton start;
    
    public FibStuck() {
        setTitle("Fibonacci");
        setSize(1000, 100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        Container pane = getContentPane();
        pane.setLayout(new FlowLayout());
        
        numField = new JTextField(10);
        pane.add(numField);
        
        start = new JButton("Compute Fibonacci");
        start.addActionListener(this);
        pane.add(start);
        
        seqField = new JTextField(80);
        pane.add(seqField);
    }
    
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == start) {
            String result = "";
            int max = Integer.parseInt(numField.getText());
            for (int i = 0; i <= max; ++i) {
                result += " " + computeFib(i);
            }
            seqField.setText(result);
        }
    }
    
    private int computeFib(int f) {
        if (f < 2) {return 1;}
        else {
            return computeFib(f - 1) + computeFib(f - 2);
        }
    }

    public static void main(String[] args) {
        FibStuck f = new FibStuck();
        f.setVisible(true);
    }
}
