rendered paste body/* 33 ??????, ??? ??? ?? ???? ??????????????? ??-??-???! *//* (1): ???????????? ????? ?????? ? ????? ????????Java GUI Toolkit ?? ???? ??????? ???? ?? ????? */import java.awt.*;/* (2): ???????? ?????? ????? ????? ???? ? ????? ??????? */public class FibArray { public static void main(String args[]) { new MenuFib("MenuFib").menu(); }}class MenuFib extends Frame { /* (3): ? ????? ???? ?????????? title? ??? ?????? */ public MenuFib(String title) { super(title); } public void menu() { MenuBar menuBar = new MenuBar(); Menu data = new Menu("Data"); menuBar.add(data); /* (4): ??????? ???????? ??????? ???? ? ??????, ? ????? ????? ???????? ?? ? ?????? BTW, ????????? ?????????? ??????? ?????? ????? ??? ??????? ????, ??????? ???????????? ???? ?????-?????? ?????????? ?????????????. ??? ?? ???? ???????, ??? ?? ??????? ???? ????? **???????** ?????? ???? */ data.add(new MenuItem("Input data...")); data.add(new MenuItem("-")); data.add(new MenuItem("Exit...")); setMenuBar(menuBar); /* (5): ? ????????? ???????????? ????? resize(), ??????? ??? ????? ???????? deprecated */ setSize(150,150); show(); } public boolean action(Event evt, Object arg) { if (evt.target instanceof MenuItem) { /* (6): ?????? ?????? -- ???????????? ?????????? ?????? ? ?????? ??????. ????? ????????? ??????? DRY */ if (arg.equals("Input data...")) { new DialogFib(this, "Input Data", true).dialog(); } /* (6): ?????! ?? ?????? ??? ?????! */ else if (arg.equals("Exit...")) { System.exit(0); return true; } } /* (7): ? ????????? ??????????? ??????? "false", ??? ? ?????? ???????? ?? ??????? ????, ??? ???????????? ????? ??? ?????? ???-?? ???????? ? ????? ??????????? */ return super.action(evt, arg); } /* (8): ??? ??????? ??????????? ? ????????? ? ?????????? ?????????? ???? ?? ?????? ???? */ public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_DESTROY) { dispose(); return true; } /* (9): ?????? ????? (7) */ return super.handleEvent(evt); }}/* (10): ?????????? ???????? ??????, ??????? ?????? ?????? ??? ????? ????????????? ?????. ????? ?? ???????? ???? ??? ????? ????? ?? ??????? ?????. */class DialogFib extends Dialog { /* ?????????? ???????? ???????? ?????????? -- ????? ?????? */ int nf; static String temp; TextField tf; /* (11): ??? ??? ??????? -- ????????? ?????? ? ?????? ?? ?????? */ public DialogFib(Frame parent, String title, boolean isModal) { super(parent, title, isModal); } public void dialog() { /* (12): ????????? ??????????, ??????? ???????????? ?????? ??????? */ 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(); /* (13): ??????????? ????????. ??? ????? ?????? ???. ?? ??????? ?????? ????. ???? ???? ??????? ??????? ??????? ????? (??? ???????? ????? ?????????? ?? ?????? ? ??????????? long -- ??? ???? ????????? ????????????????? ?????), ?? ?????????? ??? ???? ?????? ? ?????????? ?? ??????, ?????? ??? ????? ???????????? ?? ??????????? MessageBox, ? ?????? ???????????? ???????????? */ hide(); if (nf > 92) { temp = ""; new Corr("Corr number fib").corr(); } else { /* (14): ???????? ????? ???? ???? ????? ?????????? ? ??????? ??????, ? ?? ??????? ???? ?????? ?? ?????? */ new Fib(nf).fibo(); return true; } } /* (15): ?????? ????? (7) */ return super.action(evt, arg); } /* (16): ????? ????????? ??????? DRY */ public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_DESTROY) { dispose(); return true; } return super.handleEvent(evt); }}/* (17): ????? ???????? ?????? ????????, ?????? ????????????? ???????????? MessageBox */class Corr extends Frame { /* (18): ??? ?????? */ public Corr(String title) { super(title); } public void corr() { Label label = new Label("Number fib < 93"); add(label); pack(); show(); /* (19): ???????????????? ?????? ? ?????-?? ??????? ???????? ??????????. Evil, pure evil. */ move(300,0); /* (20): ? ??? ???? ?? ????? ?? ?????. ??? ?????????? ????????? ??????????? ????: 1. ????????? ??????? DRY 2. ???????? ?????????? ?????? ??? ????? ???????. ???? ????????? ??????? ??????? ??????? ?????, ?? ????? ?????? ?? ?????? ?????? ?????? ???????? */ new DialogFib(this, "Input Data", true).dialog(); } /* (21): handleEvent ???????????? ? ?????? ???! */ public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_DESTROY) { dispose(); return true; } return super.handleEvent(evt); }}/* (22): ?????? ?????? ?????. ???? ? ???????? ??? ????????????? ????? ???? ?? ?????????, ???????? ?? ? ?????-?????? generic ?????????? ?????????? */class Fib { /* (23): Predefined ???????? ???????? -- ?????????? ??????! ? ????? ?????????? ???????? ???????? ?????????? */ 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]; /* (24): ?????????????? ????? ??????????? ? ??????, ????? ?? ???????? .toString() ??????? */ fibs[i] = "" + fib[i]; } new TableFib(fibs, nf).table(); }}/* (23): ? ??? ???? ?????? ??????. ???? ?????????? -- ?????? ????? ?????? ????????? ?? ????? */class TableFib extends Frame { /* (24): ? ????? ?????????? ??????? ????? ????? ?????? ?????????? */ String fibs[] = new String[100]; int nf; TextArea tt; /* (25): ?????? ??? ??????? */ public TableFib(String title) { super(title); } /* (26): OMG! ?????? ???????????! */ public TableFib(String fibs[], int nf) { /* (27): OMG! ????? ??????? ???????????? ?? ???????! */ this("Fibonacci table"); this.nf = nf; /* (28): ???????? ??? ? ????, ???? ?? ?????????? ??? ?????-?????? (? ?????????? ??? ?????? ???? ???) */ for (int i = 0; i < nf; i++) this.fibs[i] = fibs[i]; } public void table() { /* (29): ??? ?????????????? ??? ???? ???????? ?????? ????? ????????, ????? ????????? ???????? ????????? ????? */ String str, Zagstr = "Number"+" Fibonacci"+"\n"; /* (30): ???????????? ????? ??????? ???????? ? ????? ????, ? ?? ?????????? ?????????????? ??? ?? ?????????. EVIL. */ tt = new TextArea(Zagstr, 92, 30); add(tt); for (int i = 0; i < nf; i++) { /* (31): ?????????, ??????? ??????? ???? ?????? ??? ????, ????? ? ?????? ?????? ??????? ? ?????? ????? ????? */ if (i < 9) str = "0" + (i+1) + " " + fibs[i] + "\n"; else str = (i+1) + " " + fibs[i] + "\n"; tt.append(str); } pack(); /* (32): ????? ??????? ????????? ???? */ move(300,0); show(); } /* (33): ??? ?????? ???????? -- handleEvent! */ public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_DESTROY) { dispose(); return true; } return super.handleEvent(evt); }}/* ???, ?????, ? ??? ?????? -- ???????. */