日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java_画图软件

發(fā)布時(shí)間:2023/12/20 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java_画图软件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)介:本文講解如何用java寫一個(gè)簡(jiǎn)單的畫圖軟件。
運(yùn)行效果


代碼

import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage;public class Main {// 創(chuàng)建窗口對(duì)象private Frame frame = new Frame("簡(jiǎn)答手繪程序");// 定義畫圖區(qū)的寬高private final int AREA_WIDTH = 500;private final int AREA_HEIGHT = 400;// 定義一個(gè)右鍵菜單 用于設(shè)置畫筆的顏色private PopupMenu colorMenu = new PopupMenu(); // 那個(gè)顏色選擇框的菜單private MenuItem redItem = new MenuItem("紅色");private MenuItem greenItem = new MenuItem("綠色");private MenuItem blueItem = new MenuItem("藍(lán)色");// 定義一個(gè)變量 距離當(dāng)前畫筆的顏色private Color forceColor = Color.BLACK;// 創(chuàng)建一個(gè)BufferedImage位圖對(duì)象BufferedImage image = new BufferedImage(AREA_WIDTH, AREA_HEIGHT, BufferedImage.TYPE_INT_BGR); // 參數(shù)順序 寬 高 圖片類型// 通過(guò)位圖,獲取關(guān)聯(lián)的Graphics對(duì)象Graphics g = image.getGraphics();// 自定義一個(gè)類 繼承 Canvesprivate class MyCanves extends Canvas{@Overridepublic void paint(Graphics g) {g.drawImage(image, 0, 0, null); // 圖的來(lái)源 圖的位置x 圖的位置y 觀察者(沒有填null)}}MyCanves drawArea = new MyCanves(); // 創(chuàng)建一個(gè)畫布// 定義變量 記錄 鼠標(biāo)拖動(dòng)過(guò)程中 上一次所處的坐標(biāo)private int preX = -1;private int preY = -1;public void init(){// 組裝視圖 邏輯控制// 注冊(cè)監(jiān)聽器ActionListener listener = new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {String actionCommand = e.getActionCommand();switch (actionCommand){case "紅色":forceColor = Color.RED;break;case "綠色":forceColor = Color.GREEN;break;case "藍(lán)色":forceColor = Color.BLUE;break;}}};// 給菜單每個(gè)按鈕添加監(jiān)聽器redItem.addActionListener(listener);greenItem.addActionListener(listener);blueItem.addActionListener(listener);// 把每個(gè)菜單按鈕添加到菜單中colorMenu.add(redItem);colorMenu.add(greenItem);colorMenu.add(blueItem);// 把colorMenu設(shè)置給繪圖區(qū)域drawArea.add(colorMenu);// 添加鼠標(biāo)點(diǎn)擊監(jiān)聽器drawArea.addMouseListener(new MouseAdapter() {@Overridepublic void mouseReleased(MouseEvent e) {boolean popupTrigger = e.isPopupTrigger();if (popupTrigger){ // 右鍵釋放后 在drawArea上的 x, y位置顯示圖像colorMenu.show(drawArea, e.getX(), e.getY());}// 鼠標(biāo)松開的時(shí)候 重置 preX和preYpreX = -1;preY = -1;}});// 設(shè)置位圖的背景為白色g.setColor(Color.white);// 設(shè)置位圖為矩形g.fillRect(0, 0, AREA_WIDTH, AREA_HEIGHT);// 通過(guò)監(jiān)聽鼠標(biāo)的移動(dòng) 完成線條繪制 // 這里用的是鼠標(biāo)移動(dòng)的監(jiān)聽器drawArea.addMouseMotionListener(new MouseAdapter() {@Overridepublic void mouseDragged(MouseEvent e) {if (preX > 0 && preY > 0){// 設(shè)置線條的顏色g.setColor(forceColor);// 畫線條// 前兩個(gè)參數(shù)是 一條線的上一個(gè)點(diǎn)的坐標(biāo) 后面兩個(gè)參數(shù)是 線的終點(diǎn)坐標(biāo)g.drawLine(preX, preY, e.getX(), e.getY());}// 修正preX 和 preY的值preX = e.getX();preY = e.getY();// 重繪組件drawArea.repaint();}});drawArea.setPreferredSize(new Dimension(AREA_WIDTH, AREA_HEIGHT));frame.add(drawArea);// 關(guān)閉按鈕frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});frame.pack();frame.setVisible(true);}public static void main(String[] args){new Main().init();} }

總結(jié)

以上是生活随笔為你收集整理的Java_画图软件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。