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

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

?? ui.java

?? 用圖形用戶界面表示的圖
?? JAVA
字號:
package hartech.kids.grapher;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import hartech.ui.*;
import hartech.ds.*;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Website: www.hartech.cn </p>
 * <p>Page: http://www.hartech.cn/blog/blogview.asp?logID=88 </p>
 *
 * <p>Date: 2006-09-07 </p>
 */
public class UI {

  static JFrame jFrame;
  static DrawPanel drawPanel;
  static JPanel jPanel_control, jPanel_DFS, jPanel_BFS, jPanel_tree,
  jPanel_shortest, jPanel_setting;
  static JComboBox jComboBox_DFS_begin, jComboBox_BFS_begin,
  jComboBox_shortest_begin, jComboBox_shortest_end;
  static JCheckBox jCheckBox_show_route, jCheckBox_show_number;
  static JTextField jTextField_DFS, jTextField_BFS, jTextField_tree,
  jTextField_short, jTextField_route;
  static Integer[] intArray;

  // kind 影響線、序號的偏移量
  static final int TREE = -2, DFS = 1, BFS = -1, SHORT = 2, ROUTE = 0;

  static final Color
      COLOR_DFS = new Color(124, 188, 227),
  COLOR_BFS = new Color(121, 235, 117),
  COLOR_TREE = new Color(252, 106, 180),
  COLOR_SHORT = new Color(188, 86, 212),
  COLOR_ROUTE = new Color(149, 172, 193),
  COLOR_BG = new Color(243, 245, 219);

  static BasicStroke dotted;

  // 箭頭兩邊長度
  static final double arrow_length = 22;
  // 箭頭兩邊偏移角度
  static final double arrow_diff = 9;
  // 線縮短長度
  static final double line_cut = 20;
  static ComboBoxRenderer comboBoxRenderer;

  static {
    intArray = new Integer[Main.icon_num];
    for (int i = 0; i < Main.icon_num; i++) {
      intArray[i] = new Integer(i);
    }
    dotted = new BasicStroke(1, BasicStroke.CAP_SQUARE,
                             BasicStroke.JOIN_ROUND, 0,
                             new float[] {3, 7}, 0);
    comboBoxRenderer = new ComboBoxRenderer();
    comboBoxRenderer.setPreferredSize(new Dimension(30, 20));
  }

  public UI() {
    jFrame = new JFrame("Grapher  ---- www.hartech.cn");
    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// add
    jFrame.add(drawPanel(), BorderLayout.CENTER);
    jFrame.add(jPanel_control(), BorderLayout.SOUTH);
    jFrame.setSize(750, 475);
    J.goCenter(jFrame);
    jFrame.setVisible(true);
  }

  static DrawPanel drawPanel() {

    drawPanel = new DrawPanel(null);

    for (int i = 0; i < Main.icon_num; i++) {
      drawPanel.add(Main.icon[i]);
    }

    jTextField_DFS = new JTextField(String.valueOf(Main.length_DFS));
    jTextField_DFS.setHorizontalAlignment(JTextField.RIGHT);
    jTextField_DFS.setEditable(false);
    jTextField_DFS.setBackground(Color.white);
    jTextField_DFS.setForeground(COLOR_DFS);
    jTextField_DFS.setBorder(BorderFactory.createEmptyBorder());

    jTextField_BFS = new JTextField(String.valueOf(Main.length_BFS));
    jTextField_BFS.setHorizontalAlignment(JTextField.RIGHT);
    jTextField_BFS.setEditable(false);
    jTextField_BFS.setBackground(Color.white);
    jTextField_BFS.setForeground(COLOR_BFS);
    jTextField_BFS.setBorder(BorderFactory.createEmptyBorder());

    jTextField_tree = new JTextField(String.valueOf(Main.length_tree));
    jTextField_tree.setHorizontalAlignment(JTextField.RIGHT);
    jTextField_tree.setEditable(false);
    jTextField_tree.setBackground(Color.white);
    jTextField_tree.setForeground(COLOR_TREE);
    jTextField_tree.setBorder(BorderFactory.createEmptyBorder());

    jTextField_short = new JTextField(String.valueOf(Main.length_short));
    jTextField_short.setHorizontalAlignment(JTextField.RIGHT);
    jTextField_short.setEditable(false);
    jTextField_short.setBackground(Color.white);
    jTextField_short.setForeground(COLOR_SHORT);
    jTextField_short.setBorder(BorderFactory.createEmptyBorder());

    jTextField_route = new JTextField(String.valueOf(Main.length_tree));
    jTextField_route.setHorizontalAlignment(JTextField.RIGHT);
    jTextField_route.setEditable(false);
    jTextField_route.setBackground(Color.white);
    jTextField_route.setForeground(COLOR_ROUTE);
    jTextField_route.setBorder(BorderFactory.createEmptyBorder());

    drawPanel.add(jTextField_DFS);
    drawPanel.add(jTextField_BFS);
    drawPanel.add(jTextField_tree);
    drawPanel.add(jTextField_short);
    drawPanel.add(jTextField_route);

    drawPanel.setBackground(Color.white);
    return drawPanel;
  }

  static JPanel jPanel_control() {
    jPanel_control = new JPanel(new GridLayout(2, 1));

    JPanel jPanel = new JPanel(new GridLayout(1, 2));
    jPanel.add(jPanel_DFS());
    jPanel.add(jPanel_BFS());
    jPanel_control.add(jPanel);

//
    jPanel = new JPanel(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    c.fill = GridBagConstraints.BOTH;
    c.weightx = 1.0;
    c.weighty = 1.0;

    jPanel.add(jPanel_shortest(), c);
    jPanel.add(jPanel_tree(), c);
    jPanel.add(jPanel_setting(), c);
    jPanel_control.add(jPanel);

    return jPanel_control;
  }

  static JPanel jPanel_DFS() {
    JLabel jLabel = new JLabel("起點:");
    jLabel.setForeground(UI.COLOR_DFS);

    jComboBox_DFS_begin = new JComboBox(intArray);
    jComboBox_DFS_begin.setRenderer(comboBoxRenderer);
    jComboBox_DFS_begin.setMaximumRowCount(10);
    jComboBox_DFS_begin.setSelectedIndex(5);

    JButton jButton_DFS_begin = new JButton("顯示");
    jButton_DFS_begin.setForeground(UI.COLOR_DFS);
    jButton_DFS_begin.addActionListener(new ActionListener_buttons());
    jButton_DFS_begin.setActionCommand("DFS_begin");

    JButton jButton_DFS_clean = new JButton("清除");
    jButton_DFS_clean.setForeground(UI.COLOR_DFS);
    jButton_DFS_clean.addActionListener(new ActionListener_buttons());
    jButton_DFS_clean.setActionCommand("DFS_clean");

    jPanel_DFS = new JPanel();
    jPanel_DFS.add(jLabel);
    jPanel_DFS.add(jComboBox_DFS_begin);
    jPanel_DFS.add(jButton_DFS_begin);
    jPanel_DFS.add(jButton_DFS_clean);

    jPanel_DFS.setBorder(BorderFactory.createTitledBorder("深度優先遍歷"));
    jPanel_DFS.setBackground(COLOR_BG);
    return jPanel_DFS;
  }

  static JPanel jPanel_BFS() {
    JLabel jLabel = new JLabel("起點:");
    jLabel.setForeground(UI.COLOR_BFS);

    jComboBox_BFS_begin = new JComboBox(intArray);
    jComboBox_BFS_begin.setRenderer(comboBoxRenderer);
    jComboBox_BFS_begin.setMaximumRowCount(10);
    jComboBox_BFS_begin.setSelectedIndex(3);

    JButton jButton_BFS_begin = new JButton("顯示");
    jButton_BFS_begin.setForeground(UI.COLOR_BFS);
    jButton_BFS_begin.addActionListener(new ActionListener_buttons());
    jButton_BFS_begin.setActionCommand("BFS_begin");

    JButton jButton_BFS_clean = new JButton("清除");
    jButton_BFS_clean.setForeground(UI.COLOR_BFS);
    jButton_BFS_clean.addActionListener(new ActionListener_buttons());
    jButton_BFS_clean.setActionCommand("BFS_clean");

    jPanel_BFS = new JPanel();
    jPanel_BFS.add(jLabel);
    jPanel_BFS.add(jComboBox_BFS_begin);
    jPanel_BFS.add(jButton_BFS_begin);
    jPanel_BFS.add(jButton_BFS_clean);

    jPanel_BFS.setBorder(BorderFactory.createTitledBorder("廣度優先遍歷"));
    jPanel_BFS.setBackground(COLOR_BG);
    return jPanel_BFS;
  }

  static JPanel jPanel_tree() {

    JButton jButton_tree_begin = new JButton("顯示");
    jButton_tree_begin.setForeground(UI.COLOR_TREE);
    jButton_tree_begin.addActionListener(new ActionListener_buttons());
    jButton_tree_begin.setActionCommand("tree_begin");

    JButton jButton_tree_clean = new JButton("清除");
    jButton_tree_clean.setForeground(UI.COLOR_TREE);
    jButton_tree_clean.addActionListener(new ActionListener_buttons());
    jButton_tree_clean.setActionCommand("tree_clean");

    jPanel_tree = new JPanel();
    jPanel_tree.add(jButton_tree_begin);
    jPanel_tree.add(jButton_tree_clean);
    jPanel_tree.setBorder(BorderFactory.createTitledBorder("最小生成樹"));
    jPanel_tree.setBackground(COLOR_BG);
    return jPanel_tree;
  }

  static JPanel jPanel_shortest() {

    JLabel jLabel_begin = new JLabel("起點:");
    jLabel_begin.setForeground(UI.COLOR_SHORT);

    jComboBox_shortest_begin = new JComboBox(intArray);
    jComboBox_shortest_begin.setRenderer(comboBoxRenderer);
    jComboBox_shortest_begin.setMaximumRowCount(10);
    jComboBox_shortest_begin.setSelectedIndex(2);

    JLabel jLabel_end = new JLabel("終點:");
    jLabel_end.setForeground(UI.COLOR_SHORT);

    jComboBox_shortest_end = new JComboBox(intArray);
    jComboBox_shortest_end.setRenderer(comboBoxRenderer);
    jComboBox_shortest_end.setMaximumRowCount(10);
    jComboBox_shortest_end.setSelectedIndex(24);

    JButton jButton_shortest_begin = new JButton("顯示");
    jButton_shortest_begin.setForeground(UI.COLOR_SHORT);
    jButton_shortest_begin.addActionListener(new ActionListener_buttons());
    jButton_shortest_begin.setActionCommand("shortest_begin");

    JButton jButton_shortest_clean = new JButton("清除");
    jButton_shortest_clean.setForeground(UI.COLOR_SHORT);
    jButton_shortest_clean.addActionListener(new ActionListener_buttons());
    jButton_shortest_clean.setActionCommand("shortest_clean");

    jPanel_shortest = new JPanel();
    jPanel_shortest.add(jLabel_begin);
    jPanel_shortest.add(jComboBox_shortest_begin);
    jPanel_shortest.add(jLabel_end);
    jPanel_shortest.add(jComboBox_shortest_end);
    jPanel_shortest.add(jButton_shortest_begin);
    jPanel_shortest.add(jButton_shortest_clean);

    jPanel_shortest.setBorder(BorderFactory.createTitledBorder("最短路徑"));
    jPanel_shortest.setBackground(COLOR_BG);
    return jPanel_shortest;
  }

  static JPanel jPanel_setting() {
    jCheckBox_show_route = new JCheckBox("使用路線圖");
    jCheckBox_show_route.setBackground(UI.COLOR_BG);
    jCheckBox_show_route.setForeground(UI.COLOR_ROUTE);
    jCheckBox_show_route.addActionListener(new ActionListener_buttons());
    jCheckBox_show_route.setActionCommand("show_route");

    jCheckBox_show_number = new JCheckBox("顯示序號");
    jCheckBox_show_number.setBackground(UI.COLOR_BG);
    jCheckBox_show_number.setForeground(UI.COLOR_ROUTE);
    jCheckBox_show_number.addActionListener(new ActionListener_buttons());
    jCheckBox_show_number.setActionCommand("show_number");

    jPanel_setting = new JPanel();
    jPanel_setting.add(jCheckBox_show_route);
    jPanel_setting.add(jCheckBox_show_number);
    jPanel_setting.setBorder(BorderFactory.createTitledBorder("設置"));
    jPanel_setting.setBackground(COLOR_BG);
    return jPanel_setting;
  }
}

class DrawPanel
    extends JPanel {
  public DrawPanel(LayoutManager layout) {
    super(layout);
  }

  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    int from, no, to;

    // drawing DFS
    Queue queue = Main.Q_DFS.clone();
    from = UI.jComboBox_DFS_begin.getSelectedIndex();
    no = 0;
    to = 0;
    queue.deQueue();
    while (!queue.isEmpty()) {
      no++;
      to = ( (Integer) queue.deQueue()).intValue();
      drawLine(g, from, to, UI.DFS, no, UI.COLOR_DFS);
      from = to;
    }

    // drawing BFS
    queue = Main.Q_BFS.clone();
    from = UI.jComboBox_BFS_begin.getSelectedIndex();
    no = 0;
    to = 0;
    while (!queue.isEmpty()) {
      no++;
      to = ( (Integer) queue.deQueue()).intValue();
      drawLine(g, from, to, UI.BFS, no, UI.COLOR_BFS);
      from = to;
    }

    // drawing shortest
    queue = Main.Q_shortest.clone();
    from = UI.jComboBox_shortest_begin.getSelectedIndex();
    no = 0;
    to = 0;
    while (!queue.isEmpty()) {
      no++;
      to = ( (Integer) queue.deQueue()).intValue();
      drawLine(g, from, to, UI.SHORT, no, UI.COLOR_SHORT);
      from = to;
    }

    // drawing tree
    queue = Main.Q_tree.clone();
    no = 0;
    Dimension d;
    while (!queue.isEmpty()) {
      no++;
      d = (Dimension) queue.deQueue();
      drawLine(g, d.width, d.height, UI.TREE, no, UI.COLOR_TREE);
    }

    // drawing route
    if (UI.jCheckBox_show_route.isSelected()) {
      queue = Main.Q_route.clone();
      no = -1;

      ( (Graphics2D) g).setStroke(UI.dotted);
      while (!queue.isEmpty()) {
        d = (Dimension) queue.deQueue();
        drawLine(g, d.width, d.height, UI.ROUTE, no, UI.COLOR_ROUTE);
      }
    }
    d = (Dimension) UI.drawPanel.getSize();

    // 總長度
    UI.jTextField_DFS.setBounds(d.width - 45, d.height - 100, 40, 20);

    UI.jTextField_BFS.setBounds(d.width - 45, d.height - 80, 40, 20);

    UI.jTextField_short.setBounds(d.width - 45, d.height - 60, 40, 20);

    UI.jTextField_tree.setBounds(d.width - 45, d.height - 40, 40, 20);

    UI.jTextField_route.setBounds(d.width - 45, d.height - 20, 40, 20);

  }

  // 畫從n1節點到n2節點的箭頭
  // kind為線的種類(如 UI.TREE = 0),決定線的偏移以防四線重疊
  private void drawLine(Graphics g, int n1, int n2, int kind, int no,
                        Color color) {
    int x1, y1, x2, y2;
    g.setColor(color);
    x1 = Main.icon[n1].getX() + 10;
    y1 = Main.icon[n1].getY() + 10;
    x2 = Main.icon[n2].getX() + 10;
    y2 = Main.icon[n2].getY() + 10;

    y1 += kind;
    y2 += kind;

    if (kind == UI.ROUTE || kind == UI.TREE) {
      g.drawLine(x1, y1, x2, y2);
    }
    else {
      drawArrow(g, x1, y1, x2, y2);
    }
    if (UI.jCheckBox_show_number.isSelected() && kind != UI.ROUTE) {
      g.drawString(String.valueOf(no), (x1 + (x2 - x1) / 2 + kind * 10),
                   (y1 + (y2 - y1) / 2 + 15));
    }
  }

  // 畫箭頭,給定源坐標與目的坐標,路徑序號
  private void drawArrow(Graphics g, int x1, int y1, int x2, int y2) {
    g.drawLine(x1, y1, x2, y2);
    double angle = Math.atan( ( (double) (y2 - y1)) / (x2 - x1));
    angle += (UI.arrow_diff / 180) * Math.PI;
    int dx, dy, k;
    if (x2 >= x1) {
      k = 1;
    }
    else {
      k = -1;
    }
    dx = k * (int) (UI.arrow_length * Math.cos(angle));
    dy = k * (int) (UI.arrow_length * Math.sin(angle));
    g.drawLine(x2, y2, x2 - dx, y2 - dy);
    angle -= (UI.arrow_diff / 180) * Math.PI * 2;
    dx = k * (int) (UI.arrow_length * Math.cos(angle));
    dy = k * (int) (UI.arrow_length * Math.sin(angle));
    g.drawLine(x2, y2, x2 - dx, y2 - dy);
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色窝79yyyycom| 日本电影欧美片| 3d成人h动漫网站入口| 99在线精品视频| 日本不卡一二三区黄网| 天天综合色天天综合| 精品亚洲国产成人av制服丝袜| 麻豆精品在线播放| 国产a视频精品免费观看| 色综合色狠狠综合色| 成人高清在线视频| 91麻豆国产自产在线观看| 色综合久久六月婷婷中文字幕| 欧美午夜精品一区二区三区| 欧美日韩你懂的| 精品电影一区二区三区 | 国产在线视频一区二区| 播五月开心婷婷综合| 在线亚洲+欧美+日本专区| 日韩欧美精品在线视频| 一区二区在线电影| 国产综合一区二区| www.欧美.com| 欧美一区二区高清| 一区二区三区鲁丝不卡| 国产伦精品一区二区三区免费迷| 色哦色哦哦色天天综合| 久久一日本道色综合| 亚洲综合色噜噜狠狠| caoporen国产精品视频| 精品久久五月天| 男女视频一区二区| 99精品久久免费看蜜臀剧情介绍| 欧美日本在线一区| 日韩精品一区二区三区老鸭窝| 亚洲精品一区二区在线观看| 香蕉加勒比综合久久| 99综合影院在线| 久久久国产精华| 亚洲第一激情av| 国产一区二区三区日韩 | 色呦呦国产精品| 国产精品久久久久四虎| 韩国一区二区视频| 欧美色国产精品| 一区二区三区日韩欧美精品| 久久se这里有精品| 欧美午夜精品免费| 亚洲最新视频在线观看| 在线精品国精品国产尤物884a| 最好看的中文字幕久久| 男人操女人的视频在线观看欧美| 欧美日韩在线免费视频| 亚洲成av人片在线观看| 日韩欧美在线影院| 久久99精品国产.久久久久久| 日韩精品一区二区在线观看| 久久99精品久久久久久国产越南 | 日本午夜一本久久久综合| 欧美电影免费提供在线观看| 国产在线麻豆精品观看| 国产农村妇女精品| 欧洲精品一区二区三区在线观看| av资源网一区| 亚洲免费观看高清在线观看| 欧洲生活片亚洲生活在线观看| 亚洲成人一区二区在线观看| 日韩免费视频一区| 成人av小说网| 日韩影视精彩在线| 日本一二三不卡| 欧美日韩精品二区第二页| 国产精品99久久久久久久女警| 国产精品久久99| 538prom精品视频线放| 97久久精品人人爽人人爽蜜臀| 免费看欧美美女黄的网站| 1区2区3区欧美| 精品国产乱码久久久久久免费| 91视视频在线观看入口直接观看www | 亚洲影视资源网| 亚洲天堂av一区| 韩国女主播成人在线观看| 日韩福利电影在线| 亚洲成在线观看| 亚洲一区二区三区中文字幕| 亚洲丝袜自拍清纯另类| 国产精品私房写真福利视频| 久久女同性恋中文字幕| 久久只精品国产| 国产亚洲短视频| 亚洲国产成人私人影院tom| 国产亚洲va综合人人澡精品| 久久精品在线免费观看| 久久久美女毛片| 亚洲国产成人在线| 国产精品国产自产拍高清av | 自拍视频在线观看一区二区| 中文字幕亚洲一区二区va在线| 国产精品国产a级| 中文字幕五月欧美| 亚洲成人av一区二区三区| 日韩二区在线观看| 国产精品一二三区在线| 91麻豆成人久久精品二区三区| 91福利资源站| 欧美疯狂性受xxxxx喷水图片| 精品日韩成人av| 亚洲九九爱视频| 七七婷婷婷婷精品国产| 国产成人综合在线观看| 色狠狠综合天天综合综合| 9191久久久久久久久久久| 久久奇米777| 午夜精品久久久久久不卡8050| 国产一区免费电影| 色先锋aa成人| 久久免费的精品国产v∧| 国产精品久久精品日日| 日韩国产成人精品| 一本色道综合亚洲| 欧美精品一区二区三区四区| 亚洲欧美色综合| 精品午夜一区二区三区在线观看 | 在线观看成人小视频| 国产喂奶挤奶一区二区三区| 亚洲一卡二卡三卡四卡五卡| 国产精品一卡二卡在线观看| 欧美日韩在线播放三区| 国产欧美在线观看一区| 奇米影视一区二区三区| 欧美性猛交xxxx黑人交| 国产日韩欧美精品一区| 日本不卡在线视频| 欧美日韩久久不卡| 亚洲黄一区二区三区| 成人av电影在线| 国产亚洲女人久久久久毛片| 免费成人小视频| 欧美另类videos死尸| 亚洲一区二区三区四区中文字幕| 91小宝寻花一区二区三区| 国产欧美一区视频| 国产成人免费高清| 国产视频一区二区在线观看| 激情久久五月天| 国产人成亚洲第一网站在线播放| 另类小说综合欧美亚洲| 日韩三级在线观看| 国产美女精品在线| 久久综合色一综合色88| 激情综合网av| 国产精品免费网站在线观看| 国产**成人网毛片九色 | 欧美日韩国产成人在线免费| 亚洲一区二区三区自拍| 日韩免费观看高清完整版| 九一九一国产精品| 国产欧美日韩激情| 91亚洲国产成人精品一区二区三| 伊人色综合久久天天| 91精品在线免费观看| 免费成人在线网站| 国产精品久久久久久亚洲毛片 | 国产99久久久久久免费看农村| 亚洲欧洲性图库| 欧美一区二区三区在| 国产精品原创巨作av| 亚洲一区在线视频| 久久综合狠狠综合久久综合88| 国产大陆a不卡| 亚洲一区二区三区国产| 日韩欧美的一区二区| 成人99免费视频| 日韩不卡在线观看日韩不卡视频| 国产日产欧美一区二区视频| 欧美日韩在线精品一区二区三区激情| 日韩av电影免费观看高清完整版在线观看| 欧美成人艳星乳罩| 在线观看亚洲精品| 国产精品99久久久| 青青草国产成人av片免费| 亚洲人成电影网站色mp4| 日韩欧美一级片| 欧美日韩在线观看一区二区 | 成人激情午夜影院| 国产主播一区二区| 丝袜美腿成人在线| 亚洲宅男天堂在线观看无病毒| 久久午夜国产精品| 这里只有精品免费| 欧美日韩一级视频| 在线观看国产日韩| 99久久免费精品| 91网站最新地址| 色哟哟一区二区在线观看| www.一区二区| 99久久国产综合精品色伊| 成人午夜av电影| 国产黄色91视频|