亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jtermboard.java

?? 用JAVA程序來上BBS?這就是一個這樣的程序
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package JTerm;

import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
import javax.print.attribute.*;
import javax.sound.sampled.*;
import javax.sound.sampled.spi.*;
import java.io.*;
import java.util.Timer;
import java.util.TimerTask;
import java.net.*;
import java.util.ResourceBundle;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
public class JTermBoard
    extends JComponent {
  static ResourceBundle res = ResourceBundle.getBundle("JTerm.Res");
  int BoardWidth = 82;
  int BoardHeight = 25;
  int xPos = 5, yPos = 20;
  int fwidth = 8, fheight = 15;
  int prevLine = -1;
  int cursorX = 0, cursorY = 0;
  int startPos = -1, endPos = -1;
  String actionLetter;
  boolean active = false;
  Cursor curBack, curPgDn, curPgUp;

  // Connect Data
  String hostname;
  int hostport;
  Socket sockClient;
  InputStreamReader reader;
  OutputStreamWriter writer;
  JTermThread term;

  // Link Thread
  Thread TermThread;

  // Refresh Schedule
  Timer mytimer;
  routine routine;

  // Auto Return Control
  private int index = 0;

  //Color foreground=Color.WHITE,background=Color.BLACK;
  //boolean fontBold=false,fontUnderLine=false,fontBlink=false,fontReverse=false;
  JTermData[][] buffer = new JTermData[BoardWidth][BoardHeight];

  ImageIcon image = new ImageIcon(JTermFrm.class.getResource("JTerm.gif"));

  public JTermBoard() {
    try {
      jbInit();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void updateUI() {
    setUI(UIManager.getUI(this));
  }

  public void sendCommand(String data) {
    if (active) {
      try {
        writer.write(data.toCharArray());
        writer.flush();
      }
      catch (Exception e) {
        e.printStackTrace();
      }
    }
  }

  public void putChar(char ch, int x, int y) {
    if (isInBoard(x, y) == false)
      return;
    Graphics g = this.getGraphics();
    buffer[x][y].setData(ch);
    if (ch > '\u00ff') {
      buffer[x + 1][y].setData(res.getString("EmptyChar").charAt(0));
    }
    buffer[x][y].put(g);

  }

// Terminate the terminal
  public void Terminate() {

    // 如果處于連接狀態,則提示斷開
    if (sockClient != null && active) {
      try {
        active = false;
        sockClient.close();
        if (mytimer != null) {
          routine.cancel();
          mytimer.cancel();
        }
        synchronized (term.lock) {
          term.lock.wait();
        }
      }
      catch (Exception e) {
        e.printStackTrace();
      }

    }

  }

  public boolean isActive() {
    return this.active;
  }

  public Dimension setJTermFont(Font font) {

    int width, height;
    super.setFont(font);
    fheight = font.getSize();
    fwidth = (int)this.getFontMetrics(font).getMaxCharBounds(this.getGraphics()).
        getWidth() / 2;
    height = fheight * BoardHeight + yPos * 2;
    width = fwidth * BoardWidth + xPos;
    this.setSize(width, height);
    int i, j;
    for (i = 0; i < BoardHeight; i++) {
      for (j = 0; j < BoardWidth; j++) {
        buffer[j][i].setSize(xPos + j * fwidth, yPos + i * fheight, fwidth,
                             fheight);
      }
    }

    return new Dimension(width, height);
  }

  // Clear The Hole Screean
  public void Clear() {
    int i, j;
    for (i = 0; i < BoardWidth; i++) {
      for (j = 0; j < BoardHeight; j++) {
        buffer[i][j].setData(res.getString("EmptyChar").charAt(0));
      }
    }
    repaint();
  }

  public void setJTermColor(Color foreground, Color background) {
    this.setForeground(foreground);
    this.setBackground(background);
    buffer[0][0].setDefaultColor(foreground, background);
    this.repaint();
  }

// connect to hostname at hostport
  public void connect(String hostname, int hostport) {
    try {
      Graphics g = this.getGraphics();
      g.setColor(Color.blue);
      g.drawString(res.getString("Wait_Msg") + hostname + ":" + hostport, xPos,
                   yPos);
      this.hostname = hostname;
      this.hostport = hostport;
      term = new JTermThread(reader);
      term.setTerminal(this);
      TermThread = new Thread(term, res.getString("term"));
      TermThread.start();
      mytimer = new Timer();
      routine = new routine(this);
      mytimer.schedule(routine, 0, 500);

    }
    catch (Exception err) {
      err.printStackTrace();
    }

  }

// Clear according to cursor position
// forward=true : from cursor to end of screen
// forward=false: from beginning to cursor
  public void Clear(int x, int y, boolean forward) {
    int i = x, j = y;
    if (forward) { // from cursor to end of screen
      for (; j < BoardHeight; j++) {
        for (; i < BoardWidth; i++) {
          buffer[i][j].setData(res.getString("EmptyChar").charAt(0));
        }
        i = 0;
      }
    }
    else { // from beginning to cursor
      for (j = 0; j < BoardHeight - 1; j++) {
        for (i = 0; i < BoardWidth; i++) {
          if (i == x && j == y) {
            break;
          }
          buffer[i][j].setData(res.getString("EmptyChar").charAt(0));
        }
        if (i == x && j == y) {
          break;
        }
      }
    }
    repaint();
  }

// clear current line
  public void ClearLine(int line) {
    int i;
    for (i = 0; i < BoardWidth; i++) {
      buffer[i][line].setData(res.getString("EmptyChar").charAt(0));
    }
    repaint();
  }

// clear from start to end in this line

  public void ClearLine(int line, int start, int end) {
    int i;
    if (end == -1) {
      end = BoardWidth;
    }
    for (i = start; i < end; i++) {
      buffer[i][line].setData(res.getString("EmptyChar").charAt(0));
    }
    repaint();
  }

// refresh board
  protected void refresh(Graphics2D g2) {
    int i, j;
    int xoff, yoff = yPos;
    g2.setBackground(this.getBackground());
    g2.clearRect(0, 0, getWidth(), getHeight());
    g2.setColor(this.getForeground());

    int width;
    for (i = 0; i < BoardHeight - 1; i++) {
      xoff = xPos;
// g2.drawString(String.valueOf(i),xoff,yoff);
      for (j = 0; j < BoardWidth; j++) {
        if (buffer[j][i].getData() != res.getString("EmptyChar").charAt(0)) {
          if (isSelected(j, i)) {
            g2.setXORMode(Color.LIGHT_GRAY);
          }
          else if (i == prevLine) { // the cursor line
            g2.setXORMode(Color.pink);
          }
          else {
            g2.setPaintMode();
          }
          width = buffer[j][i].put(g2);
        }
        xoff += fwidth;
      }
      yoff += fheight;
    }
    g2.setColor(Color.white);
    g2.drawLine(xPos + cursorX * fwidth, yPos + cursorY * fheight,
                xPos + cursorX * fwidth + fwidth, yPos + cursorY * fheight);
  }

  protected void paintComponent(Graphics g) {

    Image img = createImage(this.getWidth(), this.getHeight());

    Graphics2D g2 = (Graphics2D) img.getGraphics();

    g2.setFont(g.getFont());

    if (active == false) {
      Font font = g2.getFont();
      g2.setBackground(Color.black);
      g2.setColor(Color.RED);
      g2.clearRect(0, 0, getWidth(), getHeight());
      int x, y;
      x = (getWidth() - image.getIconWidth()) / 2;
      y = (getHeight() - image.getIconHeight()) / 2;
      g2.drawImage(image.getImage(), x, y, Color.WHITE, null);

    }
    else {
      refresh(g2);
    }

    g.drawImage(img, 0, 0, Color.WHITE, null);
  }

// scroll the screen up one line
  public void ScrollUp() {
    int i, j;
    for (i = 0; i < BoardHeight - 1; i++) {
      for (j = 0; j < BoardWidth; j++) {
        buffer[j][i].copyData(buffer[j][i + 1]);
      }
    }
    repaint();
  }

//

  private void jbInit() throws Exception {

    this.setDoubleBuffered(true);
    this.setPreferredSize(new Dimension(1, 1));
    this.setVerifyInputWhenFocusTarget(true);
    this.setFocusTraversalKeysEnabled(true);
    this.addHierarchyBoundsListener(new JTermBoard_this_hierarchyBoundsAdapter(this));
    this.addMouseWheelListener(new JTermBoard_this_mouseWheelAdapter(this));
    this.addMouseWheelListener(new JTermBoard_this_mouseWheelAdapter(this));
    this.addKeyListener(new JTermBoard_this_keyAdapter(this));
    this.addMouseMotionListener(new JTermBoard_this_mouseMotionAdapter(this));
    this.addMouseListener(new JTermBoard_this_mouseAdapter(this));
    this.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS,
                               KeyboardFocusManager.
                               getCurrentKeyboardFocusManager().
                               getDefaultFocusTraversalKeys(
        KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS));
    this.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS,
                               KeyboardFocusManager.
                               getCurrentKeyboardFocusManager().
                               getDefaultFocusTraversalKeys(
        KeyboardFocusManager.UP_CYCLE_TRAVERSAL_KEYS));
    ImageIcon image = new ImageIcon(JTerm.class.getResource("back.gif"));
    curBack = Toolkit.getDefaultToolkit().createCustomCursor(image.getImage(),
        new Point(0, 0),
        res.getString("Back_Cursor"));
    image = new ImageIcon(JTerm.class.getResource("pgdn.gif"));
    curPgDn = Toolkit.getDefaultToolkit().createCustomCursor(image.getImage(),
        new Point(0, 0),
        res.getString("PgDn_Cursor"));
    image = new ImageIcon(JTerm.class.getResource("pgup.gif"));
    curPgUp = Toolkit.getDefaultToolkit().createCustomCursor(image.getImage(),
        new Point(0, 0),
        res.getString("PgUp_Cursor"));

    int i, j;
    for (i = 0; i < BoardHeight; i++) {
      for (j = 0; j < BoardWidth; j++) {
        buffer[j][i] = new JTermData(res.getString("EmptyChar").charAt(0));

      }
    }

  }

  public void setCharColor(Color foreground, Color background, int x, int y) {
    if (isInBoard(x, y) == false)
      return;
    buffer[x][y].setForeground(foreground);
    buffer[x][y].setBackground(background);
  }

  public void setCharAttr(int x, int y, boolean fontBold,
                          boolean fontUnderLine,
                          boolean fontBlink,
                          boolean fontReverse) {
    if (isInBoard(x, y) == false)
      return;
    buffer[x][y].setAttr(fontBold, fontUnderLine, fontBlink, fontReverse);
  }

  boolean isEmptyPos(int x, int y) {
    char ch = buffer[x][y].getData();
    if (ch == res.getString("EmptyChar").charAt(0)) {
      if (x > 0) {
        ch = buffer[x - 1][y].getData();
        if (ch >= '\u00ff') {
          return false;
        }
      }
      return true;
    }
    return false;
  }

// Check if highlight this line
  void CheckLine(int x, int y) {

    prevLine = -1;
    actionLetter = "";
    if (active) { // if active
      int ox = x, oy = y;
      x = (x - xPos) / fwidth;
      y = (y - yPos) / fheight + 1; // cursor Pos
      if (x >= 0 && x < BoardWidth && y < BoardHeight && y >= 0) { //if inside the terminal
        if (!isEmptyPos(x, y)) { // is a print char
          char ch;
          if (cursorY >= 3 && cursorY <= 22) {
            if (y >= 3 && y <= 22) {
              prevLine = y;
              if (y > cursorY) {
                for (int i = 0; i < y - cursorY; i++) {
                  actionLetter += res.getString("KEY_DOWN");
                }
              }
              else {
                for (int i = 0; i < cursorY - y; i++) {
                  actionLetter += res.getString("KEY_UP");
                }
              }
              actionLetter += "\r";
            }

          }
          else {

            boolean find = false;
            int i;
            while (x >= 0) {
              ch = buffer[x][y].getData();
              if (isLetterOrDigit(ch)) {
                actionLetter = "" + ch;
                find = true;
                break;
              }
              x--;
            }

            if (find) {
              if (actionLetter.length() == 1) {
                actionLetter += "\r";
              }
              prevLine = y;
            }

          }

        }
      }

    }
    if (prevLine > 0) {
      setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
      repaint();
    }
    else {
      setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
      repaint();
    }

  }

  void this_mouseMoved(MouseEvent e) {
    if (active) {
      prevLine = -1;
      if (e.getX() < xPos + 3 * fwidth) {
        actionLetter = res.getString("KEY_LEFT");
        this.setCursor(curBack);
      }
      else
      if (e.getY() < yPos + 2 * fheight) {
        actionLetter = res.getString("KEY_PGUP");
        this.setCursor(curPgUp);
      }
      else
      if (e.getY() > yPos + fheight * (BoardHeight - 3)) {
        actionLetter = res.getString("KEY_PGDN");
        this.setCursor(curPgDn);
      }
      else {
        this.CheckLine(e.getX(), e.getY());
      }
    }
  }

  public void setActive(boolean active) {
    this.active = active;
  }

  String getActionLetter() {
    return this.actionLetter;
  }

  public boolean isInBoard(int x, int y) {
    if (x >= 0 && x < BoardWidth && y >= 0 && y < BoardHeight)
      return true;
    return false;
  }

//Drag start
  public void setSelectStart(int x, int y) {
    if (active) {
      x = (x - xPos + fwidth / 2) / fwidth;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美伊人久久久久久午夜久久久久| 日韩精品资源二区在线| 欧美一级片免费看| 亚洲日本中文字幕区| 蜜臀99久久精品久久久久久软件| 不卡的av中国片| 7777女厕盗摄久久久| 国产精品久久夜| 韩国三级电影一区二区| 欧美亚洲免费在线一区| 久久久国际精品| www.久久久久久久久| 精品奇米国产一区二区三区| 亚洲精品你懂的| 不卡的av电影在线观看| 精品久久久久久久久久久久久久久 | 在线中文字幕不卡| 国产日韩欧美精品在线| 久久狠狠亚洲综合| 欧美男男青年gay1069videost| 中文字幕一区二区不卡| 国产成人免费网站| 久久综合久久综合九色| 青青草精品视频| 欧美日韩aaaaa| 亚洲五月六月丁香激情| 91一区二区在线观看| 国产精品亲子伦对白| 丁香婷婷综合激情五月色| 久久午夜色播影院免费高清 | 91久久精品一区二区三区| 中文字幕欧美日本乱码一线二线| 国产综合久久久久久鬼色| 欧美不卡一区二区三区四区| 青青草97国产精品免费观看| 欧美精品亚洲二区| 天堂一区二区在线| 日韩一二三区不卡| 日本韩国欧美一区二区三区| 国产精品久久99| www.欧美色图| 一个色在线综合| 欧美三级电影网| 日韩精品欧美精品| 日韩一级完整毛片| 国产一区不卡在线| 国产精品嫩草99a| 不卡视频免费播放| 亚洲一区二区三区视频在线播放| 欧美三级欧美一级| 蜜桃视频在线一区| 国产日韩精品一区| 色综合天天综合网国产成人综合天| 亚洲人成网站在线| 欧美视频一区二区三区四区| 五月天久久比比资源色| 日韩视频不卡中文| 成人高清视频在线| 一区二区三区在线免费视频| 欧美精品成人一区二区三区四区| 日韩成人一级片| 国产精品三级电影| 欧美日韩在线观看一区二区 | 色激情天天射综合网| 成人av免费在线| 亚洲成av人片一区二区三区| 日韩精品一区二区三区三区免费| 国产盗摄精品一区二区三区在线| 亚洲欧美色一区| 精品久久久久香蕉网| 99re66热这里只有精品3直播 | 蜜臀av性久久久久av蜜臀妖精| 国产婷婷色一区二区三区四区| 91小视频免费观看| 美腿丝袜在线亚洲一区| 中文字幕精品一区二区精品绿巨人| 在线精品视频小说1| 麻豆精品精品国产自在97香蕉 | 精品国产乱码久久久久久久| 成人a区在线观看| 日本亚洲电影天堂| 亚洲欧美日韩成人高清在线一区| 日韩欧美国产一区二区三区| 99这里都是精品| 国内精品伊人久久久久av一坑| 亚洲自拍都市欧美小说| 国产日韩欧美在线一区| 国产精品国产三级国产专播品爱网| 91麻豆精品国产91久久久使用方法 | 青青青伊人色综合久久| 亚洲欧美日韩久久| 中文字幕欧美激情一区| 日韩精品中午字幕| 欧美日韩免费高清一区色橹橹 | 五月激情六月综合| 1区2区3区欧美| 精品久久免费看| 91精品国产高清一区二区三区 | 欧美日韩在线播放三区| 成人性色生活片免费看爆迷你毛片| 天天综合日日夜夜精品| 亚洲柠檬福利资源导航| 亚洲国产高清不卡| 国产女主播视频一区二区| 日韩欧美123| 日韩丝袜情趣美女图片| 欧美日韩www| 欧美日韩三级在线| 欧美日韩中文国产| 欧美日韩综合一区| 欧美亚洲愉拍一区二区| 在线一区二区观看| 色视频一区二区| 99久久99久久精品免费观看 | 欧亚一区二区三区| 色狠狠色狠狠综合| 在线中文字幕一区| 欧美三级欧美一级| 3751色影院一区二区三区| 欧美高清视频在线高清观看mv色露露十八| 色综合一个色综合| 欧美色图免费看| 337p亚洲精品色噜噜| 3751色影院一区二区三区| 日韩视频免费观看高清完整版 | 麻豆一区二区三| 精品制服美女久久| 国产一区二区视频在线| 国产麻豆精品theporn| 国产伦精品一区二区三区在线观看| 久久99国内精品| 国产成人av福利| 成人av在线资源网| 在线观看不卡一区| 91精品麻豆日日躁夜夜躁| 久久亚洲综合色| 中文字幕一区二区三区在线观看| 一区二区三区在线视频播放| 日韩一区欧美二区| 韩国精品免费视频| 91丨九色丨国产丨porny| 欧美日韩一区二区三区四区五区| 日韩午夜av一区| 国产精品久久777777| 午夜电影一区二区| 国产成人av电影在线播放| 日本久久电影网| 精品国产成人系列| 亚洲色图欧美激情| 六月丁香综合在线视频| 不卡的av中国片| 欧美一区二区三区视频免费| 国产无一区二区| 亚洲成人自拍网| 国产999精品久久| 欧美日韩亚洲丝袜制服| 国产午夜精品理论片a级大结局 | 91福利在线观看| 欧美精品一区二区久久婷婷| 中文字幕制服丝袜一区二区三区 | 国产精品毛片无遮挡高清| 丝袜脚交一区二区| 成人黄色免费短视频| 日韩午夜精品视频| 伊人一区二区三区| 国产精品一区久久久久| 欧美日韩电影在线| 国产精品区一区二区三| 日本不卡123| 91黄色免费看| 亚洲国产精品ⅴa在线观看| 日本视频在线一区| 在线视频国内一区二区| 国产亚洲一区二区在线观看| 日韩精品一卡二卡三卡四卡无卡| 成人av电影免费在线播放| 日韩精品一区二区三区在线播放 | 中文字幕乱码亚洲精品一区| 日本美女视频一区二区| av综合在线播放| 国产婷婷色一区二区三区四区| 婷婷综合五月天| 欧美性大战久久久久久久蜜臀 | 精品成人免费观看| 日韩av在线免费观看不卡| 欧美在线你懂得| 亚洲婷婷在线视频| 成人h动漫精品一区二| 久久先锋影音av| 国产一区欧美日韩| 欧美成人一区二区三区片免费| 午夜久久久久久电影| 欧美日韩在线观看一区二区| 一区二区三区小说| 色婷婷香蕉在线一区二区| 亚洲免费观看高清完整版在线观看熊| 从欧美一区二区三区| 中文字幕精品在线不卡| 成人一区在线观看| 成人欧美一区二区三区视频网页|