java基于GUI實現(xiàn)簡單畫筆小畫板
在一塊畫板上實現(xiàn)鼠標點擊畫圖案的功能(本文未實現(xiàn)拖動劃線功能),供大家參考,具體內(nèi)容如下
思路
與java設計GUI的大體思路一致, 先設置Frame類作為框架, 其中添加組件類作為功能補充. 該設計中需要設置鼠標監(jiān)聽類, 給frame加上組件
this.addMouseListener(new MyMouseListener());
并自己實現(xiàn)一個監(jiān)聽類, implements需要重寫所有方法, 所以使用適配器
private class MyMouseListener extends MouseAdapter
給全局一個points數(shù)組變量, 保存所有點擊的點的信息, 然后重寫frame類的paint方法時改成迭代器依次畫數(shù)組中的點
@Override
? ? public void paint(Graphics g) {
? ? ? ? // paint listen on mouse event
? ? ? ? Iterator iterator = points.iterator();
? ? ? ? while (iterator.hasNext()){
? ? ? ? ? ? Point point = (Point) iterator.next();
? ? ? ? ? ? g.setColor(Color.GREEN);
? ? ? ? ? ? g.fillOval(point.x, point.y, 10, 10);
? ? ? ? }
? ? }完整代碼
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;
public class testmousepaint {
? ? public static void main(String[] args) {
? ? ? ? MyFrame myFrame = new MyFrame("IDEA");
? ? }
}
class MyFrame extends Frame{
? ? ArrayList points;
? ? public MyFrame(String title) {
? ? ? ? super(title);
? ? ? ? setBounds(200, 200, 400, 400);
? ? ? ? this.addMouseListener(new MyMouseListener());
? ? ? ? setVisible(true);
? ? ? ? setBounds(200,200,400,400);
? ? ? ? setBackground(Color.white);
? ? ? ? points = new ArrayList<>();
? ? }
? ? @Override
? ? public void paint(Graphics g) {
? ? ? ? // paint listen on mouse event
? ? ? ? Iterator iterator = points.iterator();
? ? ? ? while (iterator.hasNext()){
? ? ? ? ? ? Point point = (Point) iterator.next();
? ? ? ? ? ? g.setColor(Color.GREEN);
? ? ? ? ? ? g.fillOval(point.x, point.y, 10, 10);
? ? ? ? }
? ? }
? ? public void addpoint(Point point){
? ? ? ? points.add(point);
? ? }
? ? private class MyMouseListener extends MouseAdapter{
? ? ? ? @Override
? ? ? ? public void mousePressed(MouseEvent e) {
? ? ? ? ? ? MyFrame frame = (MyFrame) e.getSource();
? ? ? ? ? ? frame.addpoint(new Point(e.getX(), e.getY()));
? ? ? ? ? ? // click and paint every time
? ? ? ? ? ? frame.repaint();
? ? ? ? }
? ? }
}實現(xiàn)效果

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java獲取當前系統(tǒng)事件System.currentTimeMillis()方法
下面小編就為大家?guī)硪黄狫ava獲取當前系統(tǒng)事件System.currentTimeMillis()方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
Springboot實現(xiàn)定時任務的4種方式舉例詳解
在我們開發(fā)項目過程中經(jīng)常需要定時任務來幫助我們來做一些內(nèi)容,下面這篇文章主要給大家介紹了關于Springboot實現(xiàn)定時任務的4種方式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-01-01
SpringMVC使用MultipartResolver實現(xiàn)文件上傳
MultipartResolver 用于處理文件上傳,當收到請求時 DispatcherServlet 的 checkMultipart() 方法會調用 MultipartResolver 的 isMultipart() 方法判斷請求中是否包含文件2023-02-02
idea2022創(chuàng)建javaweb項目步驟(超詳細)
本文主要介紹了idea2022創(chuàng)建javaweb項目步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07
本章具體介紹了抽象類和接口,整篇文章用目前流行的手機來舉例,圖解穿插代碼案例。?JAVA成仙路從基礎開始講,后續(xù)會講到JAVA高級,中間會穿插面試題和項目實戰(zhàn),希望能給大家?guī)韼椭?/div> 2022-03-03最新評論

