import java.awt.*;
public class Testpint {
public static void main(Stri" />

java GUI編程之paint繪制操作示例

 更新時間:2020-01-22 11:00:19   作者:佚名   我要評論(0)

本文實例講述了java GUI編程之paint繪制操作。分享給大家供大家參考,具體如下:


import java.awt.*;
public class Testpint {
public static void main(Stri

本文實例講述了java GUI編程之paint繪制操作。分享給大家供大家參考,具體如下:

import java.awt.*;
public class Testpint {
    public static void main(String[] args) {
//        new TFPaint().lunchPaint();
        new TFPaint();
    }
}
class TFPaint extends Frame{
    /*
    public void lunchPaint() {
        this.setBounds(200, 200, 640, 640);
        this.setBackground(Color.BLUE);
        this.setVisible(true);
    }
    */
    TFPaint(){
        this.setBounds(200, 200, 200, 200);
        this.setBackground(Color.BLUE);
        this.setVisible(true);
    }
    public void paint(Graphics g) {
        Color c = g.getColor();
        g.setColor(Color.BLACK);
        g.fillRect(60, 60, 30, 30);
        g.setColor(Color.CYAN);
        g.fillOval(80, 80, 40, 40);
        g.setColor(c);
    }
}

paint方法是container類的一個方法,其能夠實現繪圖的功能,其是本身自帶的方法,我們相當于重寫了這個方法,在調用時我們用到了參數(Graphics g),一個畫筆,用g來實現繪畫,Frames是container的一個子類,所以我們在Frame里重寫了Paint方法。

注;Color c = g.getColor(),和g.setColor(c),相當于把畫筆用完后,重新置為原來的顏色。

Paint 的一個實例,外加MouseMonitor的介紹。

import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class TestPaint2 {
    public static void main(String[] args) {
        new TFpaint("Draw");
    }
}
class TFpaint extends Frame{
    ArrayList pointList = null;
    TFpaint(String s){
        super(s);
        pointList = new ArrayList();
        this.setLayout(null);
        this.setBounds(200, 200, 400, 400);
        this.setBackground(Color.blue);
        this.setVisible(true);
        this.addMouseListener(new MyMouseMonitor());
    }
    public void paint(Graphics g ) {
        Iterator i = pointList.iterator();
        while(i.hasNext()) {
            Point p = (Point)i.next();
            g.setColor(Color.BLACK);
            g.fillOval(p.x, p.y, 10, 10);
        }
    }
    public void addPoint(Point p) {
        pointList.add(p);
    }
}
class MyMouseMonitor extends MouseAdapter{
    public void mousePressed(MouseEvent e) {
        TFpaint f = (TFpaint) e.getSource();
        f.addPoint(new Point(e.getX(),e.getY()));
        f.repaint();
    }
}

基本要求:實現在一個界面上鼠標每點擊一下,就會生成一個點,

基本思路:要有一個Frame,用來顯示界面,由于需要在這個界面上產生點,所以我們有鼠標點擊產生點,即有對鼠標的監聽,而我們要在監聽后產生點,所以我們有Paint方法用來繪圖,而他繪制的圖就是產生一個點。

其中較為麻煩的就是,必須在指定位置(即鼠標點擊的位置產生一個點)如何來找到這個位置,在此時我們在MouseMonitor中利用e.getSource獲得信息,其中e是點擊這個事件發生時,我們把他包裝成一個類,傳輸給Monitor(其內部含有事件處理方法)

注:在Frame中我們要顯示多個點,所以我們建立了一個ArrayList,用來存儲點類型數據,在Frame中存儲的過程就相當于畫在了上面,

getSource是重新定義到一個新的來源,如上文,我們把e的getSource賦值給了f(一個Frame)相當于對frame進行添加,即Frame拿到了屬于Monitor的畫筆,我們通過e.getx,e和e.gety,進行定位,x,y,確定的就是鼠標點擊的點,addpoint,相當于點一下在Frame上添加一個點,而print就是把哪些點用圓圈表示出來,

由于點數據是用ArrayList存儲的所以對應的我們進行索引的時候用了Iterator,只要在列表里有一個點就用圓圈表示出來。

repaint,是將畫面重新顯示出來,感覺相當于刷新界面,如果沒有,在界面上雖然有點但是他不顯示,只有重傳界面(即界面刷新時才會出現)

更多關于java算法相關內容感興趣的讀者可查看本站專題:《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》

希望本文所述對大家java程序設計有所幫助。

您可能感興趣的文章:

  • java GUI編程之監聽操作實例分析
  • java GUI編程之布局控制器(Layout)實例分析
  • java GUI界面初步入門示例【AWT包】
  • Java GUI實現學生成績管理系統
  • 使用Java編寫GUI對話框的教程
  • Java的GUI編程之列表和組合框的設計使用
  • Java GUI制作簡單的管理系統
  • JAVA GUI自定義JPanel畫板背景
  • Java GUI編程之貪吃蛇游戲簡單實現方法【附demo源碼下載】
  • JAVA圖形界面(GUI)之表格的示例代碼
  • java Gui實現肯德基點餐收銀系統

相關文章

  • java GUI編程之paint繪制操作示例

    java GUI編程之paint繪制操作示例

    本文實例講述了java GUI編程之paint繪制操作。分享給大家供大家參考,具體如下: import java.awt.*; public class Testpint { public static void main(Stri
    2020-01-22
  • java GUI編程之布局控制器(Layout)實例分析

    java GUI編程之布局控制器(Layout)實例分析

    本文實例講述了java GUI編程之布局控制器(Layout)。分享給大家供大家參考,具體如下: 布局控制器,是用來系統自動分配各個component在window內部是怎么排布的;默
    2020-01-22
  • Vue設置長時間未操作登錄自動到期返回登錄頁

    Vue設置長時間未操作登錄自動到期返回登錄頁

    Vue設置長時間未操作登錄以后自動到期返回登錄頁 首先我們寫在main.js文件中 import routerUtil from "@/utils/routerutil";//先將js文件在main.js中引入 routerU
    2020-01-22
  • Python @property裝飾器原理解析

    Python @property裝飾器原理解析

    這篇文章主要介紹了Python @property裝飾器原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下 1.通過@p
    2020-01-22
  • spring cloud gateway整合sentinel實現網關限流

    spring cloud gateway整合sentinel實現網關限流

    這篇文章主要介紹了spring cloud gateway整合sentinel實現網關限流,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參
    2020-01-22
  • python基于property()函數定義屬性

    python基于property()函數定義屬性

    這篇文章主要介紹了python基于property()函數定義屬性,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下 正常情
    2020-01-22
  • vue中js判斷長時間不操作界面自動退出登錄(推薦)

    vue中js判斷長時間不操作界面自動退出登錄(推薦)

    需求說明,后臺有做半個小時不請求接口的話返回標識退出登錄,但是要請求接口才行,現在要實現前端用js判斷半個小時不操作界面的話自動跳轉到登錄頁面。 創建一個.j
    2020-01-22
  • 通過實例解析python描述符原理作用

    通過實例解析python描述符原理作用

    這篇文章主要介紹了通過實例解析python描述符原理作用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下 本質上
    2020-01-22
  • ES6學習筆記之新增數據類型實例解析

    ES6學習筆記之新增數據類型實例解析

    本文實例講述了ES6學習筆記之新增數據類型。分享給大家供大家參考,具體如下: 1、數據解構賦值 1、數組的解構賦值 基本用法:let [key1,key2...]=[value1,value2..
    2020-01-22
  • python定義類self用法實例解析

    python定義類self用法實例解析

    這篇文章主要介紹了python定義類self用法實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下 在定義類的
    2020-01-22

最新評論

老快3投注技巧