import java.awt.*; public class FibArray { public static void main(String args[]) { new MenuFib("MenuFib").menu(); } } class MenuFib extends Frame { public MenuFib(String title) { super(title); } public void menu() { MenuBar menuBar = new MenuBar(); Menu data = new Menu("Data"); menuBar.add(data); data.add(new MenuItem("Input data...")); data.add(new MenuItem("-")); data.add(new MenuItem("Exit...")); setMenuBar(menuBar); setSize(150,150); show(); } public boolean action(Event evt, Object arg) { if (evt.target instanceof MenuItem) { if (arg.equals("Input data...")) new DialogFib(this, "Input Data", true).dialog(); else if (arg.equals("Exit...")) { System.exit(0); return true; } } return super.action(evt, arg); } public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_DESTROY) { dispose(); return true; } return super.handleEvent(evt); } } class DialogFib extends Dialog { int nf; static String temp; TextField tf; public DialogFib(Frame parent, String title, boolean isModal) { super(parent, title, isModal); } public void dialog() { int m = 3; setLayout(new GridLayout(2, 1)); Panel panel = new Panel(); panel.add(new Label("Number fib")); tf = new TextField(m); tf.setText(temp); panel.add(tf); add(panel); Panel okPanel = new Panel(); okPanel.add(new Button("OK")); add(okPanel); pack(); show(); } public boolean action(Event evt, Object arg) { if (evt.target instanceof Button) { temp = tf.getText(); nf = new Integer(temp).intValue(); hide(); if (nf > 92) { temp = ""; new Corr("Corr number fib").corr(); } else { new Fib(nf).fibo(); return true; } } return super.action(evt, arg); } public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_DESTROY) { dispose(); return true; } return super.handleEvent(evt); } } class Corr extends Frame { public Corr(String title) { super(title); } public void corr() { Label label = new Label("Number fib < 93"); add(label); pack(); show(); move(300,0); new DialogFib(this, "Input Data", true).dialog(); } public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_DESTROY) { dispose(); return true; } return super.handleEvent(evt); } } class Fib { int nf; long fib[] = new long[100]; String fibs[] = new String[100]; Fib(int nf) { this.nf = nf; } public void fibo() { fib[0] = fib[1] = 1; for (int i = 0; i < nf; i++) { fib[i+2] = fib[i] + fib[i+1]; fibs[i] = "" + fib[i]; } new TableFib(fibs, nf).table(); } } class TableFib extends Frame { String fibs[] = new String[100]; int nf; TextArea tt; public TableFib(String title) { super(title); } public TableFib(String fibs[], int nf) { this("Fibonacci table"); this.nf = nf; for (int i = 0; i < nf; i++) this.fibs[i] = fibs[i]; } public void table() { String str, Zagstr = "Number"+" Fibonacci"+"\n"; tt = new TextArea(Zagstr, 92, 30); add(tt); for (int i = 0; i < nf; i++) { if (i < 9) str = "0" + (i+1) + " " + fibs[i] + "\n"; else str = (i+1) + " " + fibs[i] + "\n"; tt.append(str); } pack(); move(300,0); show(); } public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_DESTROY) { dispose(); return true; } return super.handleEvent(evt); } }