GUILayout.java
资源名称:ATM.zip [点击查看]
上传用户:ljt780218
上传日期:2022-07-30
资源大小:110k
文件大小:10k
源码类别:
金融证券系统
开发平台:
Java
- // <html><head><title>ATM Simulation Implementation - GUI Layout</title></head><body><h2>ATM Simulation Implementation - GUI Layout</h2><pre>
- /*
- * Example ATM simulation - file GUILayout.java
- *
- * This defines the layout of the graphical user interface for the ATM simulation.
- *
- * Copyright (c) 1997 - Russell C. Bjork
- *
- */
- package atm.atmparts;
- import java.awt.*;
- //</pre><hr><h3>Class GUILayout</h3><pre>
- public class GUILayout
- {
- //</pre><hr><pre>
- public static void doLayout(Container container,
- Component cardReader,
- Component display,
- Component keyboard,
- Component cashDispenser,
- Component envelopeAcceptor,
- Component receiptPrinter,
- Component operatorPanel)
- {
- container.hide();
- GridBagLayout layout = new GridBagLayout();
- container.setLayout(layout);
- // Put cardReader in a Panel with GridLayout to ensure it gets space
- // even when invisible
- Panel cardReaderPanel = new Panel();
- cardReaderPanel.setLayout(new GridLayout(1,1));
- cardReaderPanel.add(cardReader);
- container.add(cardReaderPanel);
- layout.setConstraints(cardReaderPanel,
- makeConstraints(READER_ROW, READER_COL,
- READER_WIDTH, READER_HEIGHT,
- READER_FILL));
- cardReader.hide();
- container.add(display);
- layout.setConstraints(display,
- makeConstraints(DISPLAY_ROW, DISPLAY_COL,
- DISPLAY_WIDTH, DISPLAY_HEIGHT,
- DISPLAY_FILL));
- container.add(keyboard);
- layout.setConstraints(keyboard,
- makeConstraints(KEYBOARD_ROW, KEYBOARD_COL,
- KEYBOARD_WIDTH, KEYBOARD_HEIGHT,
- KEYBOARD_FILL));
- container.add(cashDispenser);
- layout.setConstraints(cashDispenser,
- makeConstraints(DISPENSER_ROW, DISPENSER_COL,
- DISPENSER_WIDTH, DISPENSER_HEIGHT,
- DISPENSER_FILL));
- // Put envelopeAcceptor in a Panel with GridLayout to ensure it gets space
- // even when invisible
- Panel envelopeAcceptorPanel = new Panel();
- envelopeAcceptorPanel.setLayout(new GridLayout(1,1));
- envelopeAcceptorPanel.add(envelopeAcceptor);
- container.add(envelopeAcceptorPanel);
- layout.setConstraints(envelopeAcceptorPanel,
- makeConstraints(ENVELOPE_ROW, ENVELOPE_COL,
- ENVELOPE_WIDTH, ENVELOPE_HEIGHT,
- ENVELOPE_FILL));
- envelopeAcceptor.hide();
- container.add(receiptPrinter);
- layout.setConstraints(receiptPrinter,
- makeConstraints(PRINTER_ROW, PRINTER_COL,
- PRINTER_WIDTH, PRINTER_HEIGHT,
- PRINTER_FILL));
- container.add(operatorPanel);
- layout.setConstraints(operatorPanel,
- makeConstraints(OPERATOR_ROW, OPERATOR_COL,
- OPERATOR_WIDTH, OPERATOR_HEIGHT,
- OPERATOR_FILL));
- // When we create a dialog box later, we may need to pass a frame
- // to its constructor. (Standards-conforming implementations do not
- // need this, but defective implementations (e.g. Unix) do.) Our
- // container is either a Frame, or we should be able to get to one
- // from it. We can also use the location of this frame to position
- // the dialog appropriately.
- Container c = container;
- while (c != null && ! (c instanceof Frame))
- c = c.getParent();
- if (c instanceof Frame)
- _containingFrame = (Frame) c;
- else
- _containingFrame = null;
- }
- //</pre><hr><pre>
- // The GUI representing the ATM is laid out using a GridBagLayout.
- // The following constants determine the positioning of the various
- // components within the grid bag. Each component has a row and column
- // coordinate for its upper left hand corner, plus a height in rows and
- // a width in columns. The following is the arrangement:
- // ---------------------------------------------------------------------
- // | DISPLAY | RECEIPT |
- // | | PRINTER |
- // | | |
- // | | |
- // | | |
- // | | |
- // | | |
- // | | |
- // |-------------------------------------------------------------------|
- // | ENVELOPE | CASH | CARD | KEYBOARD |
- // | ACCEPTOR | DISPENSER | READER | |
- // | | | | |
- // | | | | |
- // | | | | |
- // | | | | |
- // ---------------------------------------------------------------------
- // | OPERATOR PANEL |
- // | |
- // ---------------------------------------------------------------------
- // The following constants govern the size of various components, and
- // need to be used by the component
- public static final int DISPLAYABLE_LINES = 9;
- public static final int PRINTABLE_LINES = 8;
- public static final int PRINTABLE_CHARS = 30;
- // The following are used only for doing the layout
- private static final int DISPLAY_ROW = 0;
- private static final int DISPLAY_COL = 0;
- private static final int DISPLAY_WIDTH = 3;
- private static final int DISPLAY_HEIGHT = 1;
- private static final int DISPLAY_FILL = GridBagConstraints.BOTH;
- private static final int PRINTER_ROW = 0;
- private static final int PRINTER_COL = DISPLAY_COL + DISPLAY_WIDTH;
- private static final int PRINTER_WIDTH = 1;
- private static final int PRINTER_HEIGHT = 1;
- private static final int PRINTER_FILL = GridBagConstraints.NONE;
- private static final int ENVELOPE_ROW = DISPLAY_ROW + DISPLAY_HEIGHT;
- private static final int ENVELOPE_COL = 0;
- private static final int ENVELOPE_WIDTH = 1;
- private static final int ENVELOPE_HEIGHT = 1;
- private static final int ENVELOPE_FILL = GridBagConstraints.NONE;
- private static final int DISPENSER_ROW = ENVELOPE_ROW;
- private static final int DISPENSER_COL = ENVELOPE_COL + ENVELOPE_WIDTH;
- private static final int DISPENSER_WIDTH = 1;
- private static final int DISPENSER_HEIGHT = 1;
- private static final int DISPENSER_FILL = GridBagConstraints.NONE;
- private static final int READER_ROW = ENVELOPE_ROW;
- private static final int READER_COL = DISPENSER_COL + DISPENSER_WIDTH;
- private static final int READER_WIDTH = 1;
- private static final int READER_HEIGHT = 1;
- private static final int READER_FILL = GridBagConstraints.NONE;
- private static final int KEYBOARD_ROW = ENVELOPE_ROW;
- private static final int KEYBOARD_COL = READER_COL + READER_WIDTH;
- private static final int KEYBOARD_WIDTH = 1;
- private static final int KEYBOARD_HEIGHT = 1;
- private static final int KEYBOARD_FILL = GridBagConstraints.NONE;
- private static final int OPERATOR_ROW = ENVELOPE_ROW + ENVELOPE_HEIGHT;
- private static final int OPERATOR_COL = 0;
- private static final int OPERATOR_WIDTH = GridBagConstraints.REMAINDER;
- private static final int OPERATOR_HEIGHT = 1;
- private static final int OPERATOR_FILL = GridBagConstraints.BOTH;
- private static final int TOTAL_ROWS = 3;
- private static final int TOTAL_COLS = 3;
- //</pre><hr><pre>
- // This method creates a GridBagConstraints object with specified constraints,
- // and others defaulted.
- private static GridBagConstraints makeConstraints(
- int row, int col, int width, int height, int fill)
- { GridBagConstraints g = new GridBagConstraints();
- g.gridy = row;
- g.gridx = col;
- g.gridheight = height;
- g.gridwidth = width;
- g.fill = fill;
- g.insets = new Insets(2,2,2,2);
- return g;
- }
- // On some (defective) implementations of Java, we need to pass a Frame to
- // the constructor for Dialog - the documentation says null is allowed here,
- // but Unix implementations throw a null pointer exception if one tries.
- // Fortunately, the container we are given when we do the layout is either
- // a Frame, or we should be able to get to one by following parents. The
- // doLayout method tries to fill this in; it if can't, it sets it null.
- private static Frame _containingFrame;
- public static Frame getContainingFrame()
- { return _containingFrame; }
- }
- //</pre></body></html>