simenvelopeacceptor.java
来自「含有uml的多个实例及实例的java源码。」· Java 代码 · 共 113 行
JAVA
113 行
/* * ATM Example system - file SimEnvelopeAcceptor.java * * copyright (c) 2001 - Russell C. Bjork * */ package simulation;import java.awt.*;import java.awt.event.*;/** Simulate the envelope acceptor */class SimEnvelopeAcceptor extends Button{ /** Constructor */ SimEnvelopeAcceptor() { super("Click to insert envelope"); addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { synchronized(SimEnvelopeAcceptor.this) { inserted = true; SimEnvelopeAcceptor.this.notify(); } } }); } /** Simulate accepting an envelope from customer. * * return true if an envelope was received within the prescribed time, * else false */ public synchronized boolean acceptEnvelope() { inserted = false; setVisible(true); // Wait for user to simulate inserting envelope by clicking button. // If we wait 20 seconds and no envelope is entered, we time out try { wait(MAXIMUM_WAIT_TIME); } catch(InterruptedException e) { } if (inserted) { // Animate envelope going into the machine Rectangle originalBounds = getBounds(); Rectangle currentBounds = new Rectangle(originalBounds.x, originalBounds.y, originalBounds.width, originalBounds.height); while (currentBounds.width > 0 && currentBounds.height > 0) { setBounds(currentBounds.x, currentBounds.y, currentBounds.width, currentBounds.height); repaint(); try { Thread.sleep(100); } catch (InterruptedException e) { } currentBounds.height -= 1; currentBounds.width = (originalBounds.width * currentBounds.height) / originalBounds.height; currentBounds.x = originalBounds.x + (originalBounds.width - currentBounds.width) / 2; currentBounds.y = originalBounds.y + (originalBounds.height - currentBounds.height) / 2; } setVisible(false); setBounds(originalBounds); } else { setVisible(false); } return inserted; } /** Inform the envelope acceptor that the customer has pressed the CANCEL * key. Ignored if not waiting for an envelope */ public synchronized void cancelRequested() { notify(); // End the wait for the envelope - inserted will still // be false so acceptEnvelope() will return false } /** Becomes true when an envelope has been inserted */ private boolean inserted; /** Maximum time to wait for an envelope before timing out - in milliseconds */ private static long MAXIMUM_WAIT_TIME = 20 * 1000;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?