⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 swingterminal.java

📁 The Javatm Telnet Application/Applet 很好用的
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
  public Dimension getSize() {    int xborder = 0, yborder = 0;    if (insets != null) {      xborder = insets.left + insets.right;      yborder = insets.top + insets.bottom;    }    return new Dimension(buffer.width * charWidth + xborder,                         buffer.height * charHeight + yborder);  }  /**   * Return the preferred Size of the character display.   * This turns out to be the actual size.   * @return Dimension dimension of the display   * @see #size   */  public Dimension getPreferredSize() {    return getSize();  }  /**   * The insets of the character display define the border.   * @return Insets border thickness in pixels   */  public Insets getInsets() {    return insets;  }  public void clearSelection() {    selectBegin = new Point(0, 0);    selectEnd = new Point(0, 0);    selection = null;  }  public String getSelection() {    return selection;  }  private boolean buttonCheck(int modifiers, int mask) {    return (modifiers & mask) == mask;  }  public void mouseMoved(MouseEvent evt) {    /* nothing yet we do here */  }  public void mouseDragged(MouseEvent evt) {    if (buttonCheck(evt.getModifiers(), MouseEvent.BUTTON1_MASK) ||            // Windows NT/95 etc: returns 0, which is a bug            evt.getModifiers() == 0) {      int xoffset = (super.getSize().width - buffer.width * charWidth) / 2;      int yoffset = (super.getSize().height - buffer.height * charHeight) / 2;      int x = (evt.getX() - xoffset) / charWidth;      int y = (evt.getY() - yoffset) / charHeight + buffer.windowBase;      int oldx = selectEnd.x, oldy = selectEnd.y;      if ((x <= selectBegin.x && y <= selectBegin.y)) {        selectBegin.x = x;        selectBegin.y = y;      } else {        selectEnd.x = x;        selectEnd.y = y;      }      if (oldx != x || oldy != y) {        buffer.update[0] = true;        if (debug > 0)          System.err.println("select([" + selectBegin.x + "," + selectBegin.y + "]," +                             "[" + selectEnd.x + "," + selectEnd.y + "])");        redraw();      }    }  }  public void mouseClicked(MouseEvent evt) {    /* nothing yet we do here */  }  public void mouseEntered(MouseEvent evt) {    /* nothing yet we do here */  }  public void mouseExited(MouseEvent evt) {    /* nothing yet we do here */  }  /**   * Handle mouse pressed events for copy & paste.   * @param evt the event that occured   * @see java.awt.event.MouseEvent   */  public void mousePressed(MouseEvent evt) {    requestFocus();    int xoffset = (super.getSize().width - buffer.width * charWidth) / 2;    int yoffset = (super.getSize().height - buffer.height * charHeight) / 2;    if (buffer instanceof VDUInput) {      ((VDUInput) buffer).mousePressed(xoffset, yoffset, evt.getModifiers());    }    // looks like we get no modifiers here ... ... We do? -Marcus    if (buttonCheck(evt.getModifiers(), MouseEvent.BUTTON1_MASK)) {      selectBegin.x = (evt.getX() - xoffset) / charWidth;      selectBegin.y = (evt.getY() - yoffset) / charHeight + buffer.windowBase;      selectEnd.x = selectBegin.x;      selectEnd.y = selectBegin.y;    }  }  /**   * Handle mouse released events for copy & paste.   * @param evt the mouse event   */  public void mouseReleased(MouseEvent evt) {    int xoffset = (super.getSize().width - buffer.width * charWidth) / 2;    int yoffset = (super.getSize().height - buffer.height * charHeight) / 2;    if (buffer instanceof VDUInput) {      ((VDUInput) buffer).mousePressed(xoffset, yoffset, evt.getModifiers());    }    if (buttonCheck(evt.getModifiers(), MouseEvent.BUTTON1_MASK)) {      mouseDragged(evt);      if (selectBegin.x == selectEnd.x && selectBegin.y == selectEnd.y) {        buffer.update[0] = true;        redraw();        return;      }      selection = "";      // fix end.x and end.y, they can get over the border      if (selectEnd.x < 0) selectEnd.x = 0;      if (selectEnd.y < 0) selectEnd.y = 0;      if (selectEnd.y >= buffer.charArray.length)        selectEnd.y = buffer.charArray.length - 1;      if (selectEnd.x > buffer.charArray[0].length)        selectEnd.x = buffer.charArray[0].length;      // Initial buffer space for selectEnd - selectBegin + 1 lines      // NOTE: Selection includes invisible text as spaces!      // (also leaves invisible non-whitespace selection ending as spaces)      StringBuffer selectionBuf =	new StringBuffer(buffer.charArray[0].length*(selectEnd.y-selectBegin.y+1));      for (int l = selectBegin.y; l <= selectEnd.y; l++) {        int start, end;        start = (l == selectBegin.y ? start = selectBegin.x : 0);        end = (l == selectEnd.y ? end = selectEnd.x : buffer.charArray[l].length);	boolean newlineFound = false;	char ch = ' ';	for(int i = start; i < end; i++) {	  if((buffer.charAttributes[l][i] & VDUBuffer.INVISIBLE) != 0)	    ch = ' ';	  else	    ch = buffer.charArray[l][i];	  if(ch == '\n')	    newlineFound = true;	  selectionBuf.append(ch);	}	if(!newlineFound)	  selectionBuf.append('\n');        // Trim all spaces from end of line, like xterm does.        selection += ("-" + (selectionBuf.toString())).trim().substring(1);        if (end == buffer.charArray[l].length)          selection += "\n";      }    }  }  public void keyTyped(KeyEvent e) {    if (buffer != null)      ((VDUInput) buffer).keyTyped(e.getKeyCode(), e.getKeyChar(), getModifiers(e));  }  public void keyPressed(KeyEvent e) {    if (buffer != null)      ((VDUInput) buffer).keyPressed(e.getKeyCode(), e.getKeyChar(), getModifiers(e));  }  public void keyReleased(KeyEvent e) {    // ignore  }  // lightweight component event handling  private MouseListener mouseListener;  /**   * Add a mouse listener to the VDU. This is the implementation for   * the lightweight event handling.   * @param listener the new mouse listener   */  public void addMouseListener(MouseListener listener) {    mouseListener = AWTEventMulticaster.add(mouseListener, listener);    enableEvents(AWTEvent.MOUSE_EVENT_MASK);  }  /**   * Remove a mouse listener to the VDU. This is the implementation for   * the lightweight event handling.   * @param listener the mouse listener to remove   */  public void removeMouseListener(MouseListener listener) {    mouseListener = AWTEventMulticaster.remove(mouseListener, listener);  }  private MouseMotionListener mouseMotionListener;  /**   * Add a mouse motion listener to the VDU. This is the implementation for   * the lightweight event handling.   * @param listener the mouse motion listener   */  public void addMouseMotionListener(MouseMotionListener listener) {    mouseMotionListener = AWTEventMulticaster.add(mouseMotionListener, listener);    enableEvents(AWTEvent.MOUSE_EVENT_MASK);  }  /**   * Remove a mouse motion listener to the VDU. This is the implementation for   * the lightweight event handling.   * @param listener the mouse motion listener to remove   */  public void removeMouseMotionListener(MouseMotionListener listener) {    mouseMotionListener =            AWTEventMulticaster.remove(mouseMotionListener, listener);  }  /**   * Process mouse events for this component. It will call the   * methods (mouseClicked() etc) in the added mouse listeners.   * @param evt the dispatched mouse event   */  public void processMouseEvent(MouseEvent evt) {    // handle simple mouse events    if (mouseListener != null)      switch (evt.getID()) {        case MouseEvent.MOUSE_CLICKED:          mouseListener.mouseClicked(evt);          break;        case MouseEvent.MOUSE_ENTERED:          mouseListener.mouseEntered(evt);          break;        case MouseEvent.MOUSE_EXITED:          mouseListener.mouseExited(evt);          break;        case MouseEvent.MOUSE_PRESSED:          mouseListener.mousePressed(evt);          break;        case MouseEvent.MOUSE_RELEASED:          mouseListener.mouseReleased(evt);          break;      }    super.processMouseEvent(evt);  }  /**   * Process mouse motion events for this component. It will call the   * methods (mouseDragged() etc) in the added mouse motion listeners.   * @param evt the dispatched mouse event   */  public void processMouseMotionEvent(MouseEvent evt) {    // handle mouse motion events    if (mouseMotionListener != null)      switch (evt.getID()) {        case MouseEvent.MOUSE_DRAGGED:          mouseMotionListener.mouseDragged(evt);          break;        case MouseEvent.MOUSE_MOVED:          mouseMotionListener.mouseMoved(evt);          break;      }    super.processMouseMotionEvent(evt);  }  private KeyListener keyListener;  /**   * Add a key listener to the VDU. This is necessary to be able to receive   * keyboard input from this component. It is a prerequisite for a   * lightweigh component.   * @param listener the key listener   */  public void addKeyListener(KeyListener listener) {    keyListener = AWTEventMulticaster.add(keyListener, listener);    enableEvents(AWTEvent.KEY_EVENT_MASK);  }  /**   * Remove key listener from the VDU. It is a prerequisite for a   * lightweigh component.   * @param listener the key listener to remove   */  public void removeKeyListener(KeyListener listener) {    keyListener = AWTEventMulticaster.remove(keyListener, listener);  }  /**   * Process key events for this component.   * @param evt the dispatched key event   */  public void processKeyEvent(KeyEvent evt) {    if (keyListener != null)      switch (evt.getID()) {        case KeyEvent.KEY_PRESSED:          keyListener.keyPressed(evt);          break;        case KeyEvent.KEY_RELEASED:          keyListener.keyReleased(evt);          break;        case KeyEvent.KEY_TYPED:          keyListener.keyTyped(evt);          break;      }    // consume TAB keys if they originate from our component    if (evt.getKeyCode() == KeyEvent.VK_TAB && evt.getSource() == this)      evt.consume();    super.processKeyEvent(evt);  }  FocusListener focusListener;  public void addFocusListener(FocusListener listener) {    focusListener = AWTEventMulticaster.add(focusListener, listener);  }  public void removeFocusListener(FocusListener listener) {    focusListener = AWTEventMulticaster.remove(focusListener, listener);  }  public void processFocusEvent(FocusEvent evt) {    if (focusListener != null)      switch (evt.getID()) {        case FocusEvent.FOCUS_GAINED:          focusListener.focusGained(evt);          break;        case FocusEvent.FOCUS_LOST:          focusListener.focusLost(evt);          break;      }    super.processFocusEvent(evt);  }  private int getModifiers(KeyEvent e) {    return            (e.isControlDown() ? VDUInput.KEY_CONTROL : 0) |            (e.isShiftDown() ? VDUInput.KEY_SHIFT : 0) |            (e.isAltDown() ? VDUInput.KEY_ALT : 0) |            (e.isActionKey() ? VDUInput.KEY_ACTION : 0);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -