最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)畫圖板上畫一條直線

 更新時間:2020年09月29日 08:24:50   作者:NaiKuaii  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)畫圖板上畫一條直線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

目標(biāo):在畫圖板上畫一條直線,供大家參考,具體內(nèi)容如下

一、首先需要建立一個界面

過程:1、創(chuàng)建界面對象(Java語言中已經(jīng)有,可直接創(chuàng)建對象來使用)。

2、對于一個界面,我們需要設(shè)置它的大小、居中、界面關(guān)閉、界面可見。

3、寫主方法去實(shí)現(xiàn)界面。

(目前界面還未實(shí)現(xiàn)畫圖板的功能)

public class DrawUI {
 //顯示界面的方法
 public void show(){
  //創(chuàng)建界面對象
 JFrame jframe = new JFrame();
  //設(shè)置界面的尺寸、位置居中、關(guān)閉、標(biāo)題
 jframe.setSize(1000, 900);
 jframe.setLocationRelativeTo(null);
 jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 jframe.setTitle("畫圖板v2.0");
 
  //設(shè)置界面可見
  jframe.setVisible(true);
 }
 //主方法
 public static void main(String[] args){
 DrawUI UI = new DrawUI();
 UI.show();
 }
 
}

二、創(chuàng)建監(jiān)聽器類

1、重新創(chuàng)建一個監(jiān)聽器(Listener)的類:要在界面上實(shí)現(xiàn)畫圖,我們需要給界面添加監(jiān)聽器。====>實(shí)際上是讓鼠標(biāo)的一些指令能夠在界面上有反應(yīng)。換言之,監(jiān)聽器是一個連接鼠標(biāo)與界面的橋梁。

2、監(jiān)聽器類(Listener)實(shí)現(xiàn)鼠標(biāo)監(jiān)聽器(MouseListener)的接口.

3、加入鼠標(biāo)監(jiān)聽器下的所有方法。

public class Listener implements MouseListener{
 
  //鼠標(biāo)點(diǎn)擊
 public void mouseClicked(MouseEvent e){}
 
  // 鼠標(biāo)按下
 public void mousePressed(MouseEvent e){}
 
  //鼠標(biāo)松開
 public void mouseReleased(MouseEvent e){}
 
  // 進(jìn)入
 public void mouseEntered(MouseEvent e){}
 
  // 退出 
 public void mouseExited(MouseEvent e){}
 }

三、實(shí)現(xiàn)畫出直線

1、創(chuàng)建監(jiān)聽器類(Listener)后,我們需要在界面類中添加監(jiān)聽器  =====> 在界面上添加監(jiān)聽器后,我們才能在界面上畫圖。(寫在畫圖板“可見”之前 )。

在畫圖板中輸入一下代碼

//創(chuàng)建監(jiān)聽器
 Listener draw = new Listener(); 
//添加監(jiān)聽器
 jframe.addMouseListener(draw);

2、畫一條直線,我們需要用Graphics (畫布工具)用于畫圖。在此,畫圖板需要獲取Graphics 并且監(jiān)聽器對象上設(shè)置該畫布。

(寫在畫圖板“可見”之后)

//獲取Graphics
Graphics graph = jframe.getGraphics();
//給監(jiān)聽器的畫布對象賦值
draw.setGraphics(graph);

然后轉(zhuǎn)到監(jiān)聽器類(Listener)中輸入代碼

3、開始畫直線

<1> 首先,畫一條直線我們需要獲取直線兩端點(diǎn)的坐標(biāo)。所以定義x1,y1,x2,y2。

<2>畫布畫圖,需要定義Graphics

//記錄坐標(biāo)
int x1,y1,x2,y2;
 
//定義Graphics
Graphics graph1;

<3> 傳畫布(Graphics)值的方法 ====> 畫圖板上的畫布值等于監(jiān)聽器上的畫布值

//傳畫布值的方法
public void setGraphics(Graphics graph2){
graph1 = graph2;

<4>鼠標(biāo)畫出直線

在鼠標(biāo)按下事件中輸入起點(diǎn)坐標(biāo)

 public void mousePressed(MouseEvent e){
 //獲取按下信息
 x1=e.getX();
 y1=e.getY();
 }

在鼠標(biāo)松開事件中輸入終點(diǎn)坐標(biāo),并畫出直線

public void mouseReleased(MouseEvent e){
 //獲取松開信息
 x2=e.getX();
 y2=e.getY();
 //畫線
 graph1.drawLine(x1,y1,x2,y2);
 }

四、完整過程:

界面

package Draw;
 
import java.awt.Graphics;
 
import javax.swing.JFrame;
 
public class DrawUI {
 public void show(){
 JFrame jframe = new JFrame();
 jframe.setSize(1000, 900);
 jframe.setLocationRelativeTo(null);
 jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 jframe.setTitle("畫圖板v2.0");
 
 //創(chuàng)建監(jiān)聽器
 Listener draw = new Listener(); 
 //添加監(jiān)聽器
 jframe.addMouseListener(draw);
 
 
 jframe.setVisible(true);
 //獲取Graphics
 Graphics graph = jframe.getGraphics();
 //給監(jiān)聽器的畫布對象賦值
 draw.setGraphics(graph);
 }
 //主方法
 public static void main(String[] args){
 DrawUI UI = new DrawUI();
 UI.show();
 }
 
}

監(jiān)聽器

package Draw;
 
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
 
 
public class Listener implements MouseListener{
 //記錄坐標(biāo)
 int x1,y1,x2,y2;
 
 //定義Graphics
 Graphics graph1;
 
 //傳畫布值的方法
 public void setGraphics(Graphics graph2){
 graph1 = graph2;
 
 
 }
 
 public void mouseClicked(MouseEvent e){}
 
 public void mousePressed(MouseEvent e){
 //獲取按下信息
 x1=e.getX();
 y1=e.getY();
 }
 
 public void mouseReleased(MouseEvent e){
 //獲取松開信息
 x2=e.getX();
 y2=e.getY();
 //畫線
 graph1.drawLine(x1,y1,x2,y2);
 }
 
 
 public void mouseEntered(MouseEvent e){}
 
 public void mouseExited(MouseEvent e){}
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java?Stream對象并行處理方法parallel()代碼示例

    Java?Stream對象并行處理方法parallel()代碼示例

    在Java中Stream是一種用于處理集合數(shù)據(jù)的流式操作API,它提供了一種簡潔、靈活、高效的方式來對集合進(jìn)行各種操作,下面這篇文章主要給大家介紹了關(guān)于Java?Stream對象并行處理方法parallel()的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • java實(shí)現(xiàn)打磚塊小游戲

    java實(shí)現(xiàn)打磚塊小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)打磚塊小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java實(shí)現(xiàn)屏幕截圖及剪裁

    Java實(shí)現(xiàn)屏幕截圖及剪裁

    這是一篇入門級文章,高手請略過。在這篇文章中我們將學(xué)習(xí)如何用 Java 對圖像進(jìn)行剪裁并將剪裁出來的部分單獨(dú)保存到文件中。
    2014-09-09
  • 多數(shù)據(jù)源如何實(shí)現(xiàn)事務(wù)管理

    多數(shù)據(jù)源如何實(shí)現(xiàn)事務(wù)管理

    Spring中涉及三個核心事務(wù)處理接口:PlatformTransactionManager、TransactionDefinition和TransactionStatus,PlatformTransactionManager提供事務(wù)操作的基本方法,如獲取事務(wù)、提交和回滾
    2024-09-09
  • java 獲取內(nèi)存使用率的流程實(shí)例詳解

    java 獲取內(nèi)存使用率的流程實(shí)例詳解

    這篇文章主要為大家介紹了java 獲取內(nèi)存使用率的流程實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Java日期時間類(Date、DateFormat、Calendar)解析

    Java日期時間類(Date、DateFormat、Calendar)解析

    這篇文章主要介紹了Java日期時間類(Date、DateFormat、Calendar)解析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • Java Thread之Sleep()案例詳解

    Java Thread之Sleep()案例詳解

    這篇文章主要介紹了Java Thread之Sleep()案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Mybatis?如何傳入字符串參數(shù),分割并遍歷

    Mybatis?如何傳入字符串參數(shù),分割并遍歷

    這篇文章主要介紹了Mybatis?如何傳入字符串參數(shù),分割并遍歷,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • springboot 如何配置多個jndi數(shù)據(jù)源

    springboot 如何配置多個jndi數(shù)據(jù)源

    這篇文章主要介紹了springboot 如何配置多個jndi數(shù)據(jù)源的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 使用 Java8 實(shí)現(xiàn)觀察者模式的方法(下)

    使用 Java8 實(shí)現(xiàn)觀察者模式的方法(下)

    這篇文章主要介紹了使用 Java8 實(shí)現(xiàn)觀察者模式的方法(下)的相關(guān)資料,需要的朋友可以參考下
    2016-02-02

最新評論

象州县| 武冈市| 荣成市| 黄骅市| 大同县| 云安县| 沙河市| 钦州市| 互助| 景洪市| 盐津县| 丹寨县| 托克逊县| 合江县| 惠安县| 江口县| 新余市| 通许县| 谢通门县| 抚宁县| 兴隆县| 灵寿县| 富阳市| 磐石市| 泰和县| 章丘市| 老河口市| 利川市| 花莲县| 正蓝旗| 滨海县| 弥勒县| 泽普县| 惠水县| 松阳县| 汤原县| 江川县| 珠海市| 昆山市| 苍山县| 建阳市|