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

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

?? stroketest.java

?? 經典教材:java核心技術卷1、卷2的所有源代碼
?? JAVA
字號:
/**
   @version 1.02 2004-08-24
   @author Cay Horstmann
*/

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.*;

/**
   This program demonstrates different stroke types.
*/
public class StrokeTest
{  
   public static void main(String[] args)
   {  
      JFrame frame = new StrokeTestFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setVisible(true);
   }
}

/**
   This frame lets the user choose the cap, join, and
   line style, and shows the resulting stroke.
*/
class StrokeTestFrame extends JFrame
{  
   public StrokeTestFrame()
   {  
      setTitle("StrokeTest");
      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

      canvas = new StrokePanel();
      add(canvas, BorderLayout.CENTER);

      buttonPanel = new JPanel();
      buttonPanel.setLayout(new GridLayout(3, 3));
      add(buttonPanel, BorderLayout.NORTH);

      ButtonGroup group1 = new ButtonGroup();      
      makeCapButton("Butt Cap", BasicStroke.CAP_BUTT, group1);
      makeCapButton("Round Cap", BasicStroke.CAP_ROUND, group1);
      makeCapButton("Square Cap", BasicStroke.CAP_SQUARE, group1);

      ButtonGroup group2 = new ButtonGroup();      
      makeJoinButton("Miter Join", BasicStroke.JOIN_MITER, group2);
      makeJoinButton("Bevel Join", BasicStroke.JOIN_BEVEL, group2);
      makeJoinButton("Round Join", BasicStroke.JOIN_ROUND, group2);

      ButtonGroup group3 = new ButtonGroup();      
      makeDashButton("Solid Line", false, group3);
      makeDashButton("Dashed Line", true, group3);
   }

   /**
      Makes a radio button to change the cap style.
      @param label the button label
      @param style the cap style
      @param group the radio button group
   */
   private void makeCapButton(String label, final int style, ButtonGroup group)
   {
      // select first button in group
      boolean selected = group.getButtonCount() == 0;
      JRadioButton button = new JRadioButton(label, selected);
      buttonPanel.add(button);
      group.add(button);
      button.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               canvas.setCap(style);
            }
         });
   }

   /**
      Makes a radio button to change the join style.
      @param label the button label
      @param style the join style
      @param group the radio button group
   */
   private void makeJoinButton(String label, final int style,
      ButtonGroup group)
   {
      // select first button in group
      boolean selected = group.getButtonCount() == 0;
      JRadioButton button = new JRadioButton(label, selected);
      buttonPanel.add(button);
      group.add(button);
      button.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               canvas.setJoin(style);
            }
         });
   }

   /**
      Makes a radio button to set solid or dashed lines
      @param label the button label
      @param style false for solid, true for dashed lines
      @param group the radio button group
   */
   private void makeDashButton(String label, final boolean style,
      ButtonGroup group)
   {
      // select first button in group
      boolean selected = group.getButtonCount() == 0;
      JRadioButton button = new JRadioButton(label, selected);
      buttonPanel.add(button);
      group.add(button);
      button.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               canvas.setDash(style);
            }
         });
   }

   private StrokePanel canvas;
   private JPanel buttonPanel;

   private static final int DEFAULT_WIDTH = 400;
   private static final int DEFAULT_HEIGHT = 400;
}

/**
   This panel draws two joined lines, using different
   stroke objects, and allows the user to drag the three 
   points defining the lines. 
*/
class StrokePanel extends JPanel
{  
   public StrokePanel()
   {  
      addMouseListener(new
         MouseAdapter()
         {
            public void mousePressed(MouseEvent event)
            {  
               Point p = event.getPoint();
               for (int i = 0; i < points.length; i++)
               {  
                  double x = points[i].getX() - SIZE / 2;
                  double y = points[i].getY() - SIZE / 2;
                  Rectangle2D r = new Rectangle2D.Double(x, y, SIZE, SIZE);
                  if (r.contains(p))
                  {  
                     current = i;
                     return;
                  }
               }
            }
        
            public void mouseReleased(MouseEvent event)
            {  
               current = -1;
            }
         });

      addMouseMotionListener(new
         MouseMotionAdapter()
         {
            public void mouseDragged(MouseEvent event)
            {  
               if (current == -1) return;
               points[current] = event.getPoint();
               repaint();
            }
         });

      points = new Point2D[3];
      points[0] = new Point2D.Double(200, 100);
      points[1] = new Point2D.Double(100, 200);
      points[2] = new Point2D.Double(200, 200);
      current = -1;
      width = 8.0F;
   }

   public void paintComponent(Graphics g)
   {  
      super.paintComponent(g);
      Graphics2D g2 = (Graphics2D) g;
      GeneralPath path = new GeneralPath();
      path.moveTo((float) points[0].getX(), (float) points[0].getY());
      for (int i = 1; i < points.length; i++)
         path.lineTo((float) points[i].getX(), (float) points[i].getY());
      BasicStroke stroke;
      if (dash)
      {  
         float miterLimit = 10.0F;
         float[] dashPattern = { 10F, 10F, 10F, 10F, 10F, 10F,
            30F, 10F, 30F, 10F, 30F, 10F, 10F, 10F, 10F, 10F, 10F, 30F };
         float dashPhase = 0;
         stroke = new BasicStroke(width, cap, join, miterLimit, dashPattern, dashPhase);
      }
      else
         stroke = new BasicStroke(width, cap, join);
      g2.setStroke(stroke);
      g2.draw(path);
   }

   /**
      Sets the join style.
      @param j the join style
   */
   public void setJoin(int j) 
   { 
      join = j; 
      repaint(); 
   }

   /**
      Sets the cap style.
      @param c the cap style
   */
   public void setCap(int c) 
   { 
      cap = c; 
      repaint(); 
   }

   /**
      Sets solid or dashed lines
      @param d false for solid, true for dashed lines
   */
   public void setDash(boolean d) 
   { 
      dash = d; 
      repaint(); 
   }

   private Point2D[] points;
   private static int SIZE = 10;
   private int current;
   private float width;
   private int cap;
   private int join;
   private boolean dash;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产69精品一区二区亚洲孕妇 | 亚洲va欧美va人人爽| 日韩欧美亚洲国产另类| 成人美女视频在线观看| 日日夜夜免费精品| 国产精品久久久久久亚洲毛片| 欧美一级免费观看| 色综合天天综合网天天狠天天 | 粉嫩嫩av羞羞动漫久久久| 亚洲综合网站在线观看| 国产精品婷婷午夜在线观看| 欧美一区二区三区系列电影| 久久久久久久久99精品| 欧美午夜不卡视频| 91视频一区二区三区| 高清不卡一二三区| 国产乱色国产精品免费视频| 日av在线不卡| 亚洲在线视频免费观看| 国产精品国模大尺度视频| 亚洲精品一区二区三区精华液 | 欧美色成人综合| 成人高清视频在线| 国产精品123区| 紧缚奴在线一区二区三区| 亚洲成人自拍网| 亚洲成人7777| 亚洲国产cao| 亚洲一区影音先锋| 夜夜精品视频一区二区 | 国产午夜精品在线观看| 日韩欧美综合一区| 欧美一区二区性放荡片| 69精品人人人人| 欧美高清激情brazzers| 色一情一伦一子一伦一区| 波波电影院一区二区三区| 福利一区二区在线| 粉嫩av亚洲一区二区图片| 国产二区国产一区在线观看| 国产麻豆视频一区| 国产成人免费高清| a级高清视频欧美日韩| 99综合影院在线| 99综合电影在线视频| 色婷婷综合视频在线观看| 欧美专区在线观看一区| 欧美吻胸吃奶大尺度电影| 精品污污网站免费看| 椎名由奈av一区二区三区| 国产精品久久久久一区二区三区共| 中文幕一区二区三区久久蜜桃| 中文字幕视频一区二区三区久| 国产精品丝袜黑色高跟| 亚洲精品日韩综合观看成人91| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲猫色日本管| 亚洲成av人片| 九九久久精品视频| 成人永久免费视频| 一本到高清视频免费精品| 欧美视频日韩视频| 日韩精品一区二区三区中文不卡| 2024国产精品视频| 国产精品污网站| 亚洲一区成人在线| 欧美aaa在线| 成人国产一区二区三区精品| 在线亚洲精品福利网址导航| 欧美一区二区视频网站| 久久久久久久久久久久久久久99| 亚洲视频一二三区| 青青青爽久久午夜综合久久午夜| 久久99久久99小草精品免视看| 成人av资源下载| 欧美美女激情18p| 国产视频视频一区| 亚洲一区自拍偷拍| 国模娜娜一区二区三区| 色婷婷av一区二区三区软件 | 91精品婷婷国产综合久久性色| 精品电影一区二区三区| 国产精品五月天| 亚洲成人精品影院| 国产91丝袜在线观看| 欧美午夜一区二区三区免费大片| 国产亚洲一区二区在线观看| 亚洲黄网站在线观看| 韩国v欧美v亚洲v日本v| 在线免费亚洲电影| 久久精品夜色噜噜亚洲a∨| 亚洲国产美女搞黄色| 国产一区二区伦理片| 欧美在线啊v一区| 久久久久久久免费视频了| 亚洲午夜国产一区99re久久| 国产成人综合亚洲91猫咪| 欧美久久久久中文字幕| 日本一区二区三区电影| 五月婷婷激情综合网| 成人网页在线观看| 日韩欧美一级特黄在线播放| 亚洲欧美另类综合偷拍| 国产精品99久久久久久久女警 | 国产成人精品网址| 91麻豆精品国产91久久久资源速度| 日韩伦理电影网| 国内精品视频一区二区三区八戒| 欧美日韩1区2区| 一区二区三区视频在线看| 成人丝袜18视频在线观看| 日韩欧美不卡一区| 日本一区中文字幕| 精品视频一区 二区 三区| 亚洲日本中文字幕区| 国产成人免费av在线| 精品三级在线看| 久久国产免费看| 欧美电影影音先锋| 亚洲综合免费观看高清完整版| 成人精品视频一区二区三区 | www.综合网.com| 久久日一线二线三线suv| 美女一区二区三区| 91精品国产一区二区| 91美女福利视频| 中文字幕一区免费在线观看| 国产毛片精品视频| 国产日韩欧美麻豆| 国产成人精品在线看| 国产丝袜美腿一区二区三区| 国产成人在线视频网站| 国产欧美一区二区精品性色| 国产资源在线一区| 国产欧美一二三区| 成人一区在线观看| 国产精品久久久久一区| av男人天堂一区| 亚洲美腿欧美偷拍| 在线观看日韩国产| 亚洲 欧美综合在线网络| 欧美日高清视频| 免费观看在线综合色| 精品欧美一区二区三区精品久久| 经典一区二区三区| 久久精品视频免费观看| 成年人网站91| 亚洲国产日日夜夜| 日韩一级二级三级| 国产综合久久久久久鬼色| 国产亚洲va综合人人澡精品| 粉嫩蜜臀av国产精品网站| 综合在线观看色| 欧美视频日韩视频在线观看| 蜜桃视频免费观看一区| 精品少妇一区二区三区 | 欧美性猛交xxxx黑人交| 午夜影院在线观看欧美| 91精品国产91久久综合桃花| 精品一区二区日韩| 亚洲国产成人自拍| av激情综合网| 日韩精品久久久久久| 日韩精品专区在线| 成人的网站免费观看| 亚洲一区二区视频在线观看| 欧美大胆人体bbbb| 国产·精品毛片| 性欧美疯狂xxxxbbbb| 久久久久国产精品麻豆| 91久久精品一区二区三| 美国av一区二区| 亚洲欧洲精品天堂一级| 欧美精品高清视频| 国产宾馆实践打屁股91| 亚洲成人先锋电影| 欧美国产精品一区二区三区| 欧美午夜电影网| 懂色av一区二区三区免费看| 亚洲一级二级三级| 国产亚洲污的网站| 欧美影院精品一区| 国产一区二区福利| 亚洲第一二三四区| 国产日韩欧美精品一区| 欧美另类z0zxhd电影| 成人高清视频免费观看| 美女网站色91| 亚洲人成人一区二区在线观看| 日韩精品一区二区三区在线 | 欧美专区日韩专区| 国产剧情一区二区| 亚洲v中文字幕| 中文字幕在线播放不卡一区| 日韩欧美亚洲国产另类| 色呦呦日韩精品| 国产精品性做久久久久久| 午夜日韩在线观看| 亚洲免费观看高清完整| 欧美网站一区二区|