Java?Swing實(shí)現(xiàn)畫板的簡(jiǎn)單操作
Java Swing 畫板的操作(修改顏色,更改圖形,清除,任務(wù)欄按鈕),供大家參考,具體內(nèi)容如下
話不多說(shuō),直接看代碼
package Swing; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import java.awt.image.TileObserver; import java.awt.image.WritableRenderedImage; class MyPaiinterPanel extends JPanel{//畫布 ? ? BufferedImage image; ? ?? ? ? public MyPaiinterPanel(BufferedImage image){ ? ? ? ? this.image=image; ? ? } ? ? @Override ? ? public void paint(Graphics g) { ? ? ? ? super.paint(g); ? ? ? ? g.drawImage(image,0,0,null );//繪制指定圖像中當(dāng)前可用的圖像 ? ? } } public class paint { ? ? JFrame jf=new JFrame(); ? ? BufferedImage image=new BufferedImage(600,600,BufferedImage.TYPE_3BYTE_BGR);// 構(gòu)造一個(gè)類型為預(yù)定義圖像類型之一的 BufferedImage ? ? Graphics g= image.getGraphics(); ? ? int x1,x2,y1,y2; ? ? String xz="直線"; ? ? public void fun(String ys){//設(shè)置畫筆的顏色g ? ? ? ? if(ys.equals("紅色")){ ? ? ? ? ? ? g.setColor(Color.red); ? ? ? ? } ? ? ? ? if(ys.equals("白色")){ ? ? ? ? ? ? g.setColor(Color.white); ? ? ? ? } ? ? ? ? if(ys.equals("綠色")){ ? ? ? ? ? ? g.setColor(Color.green); ? ? ? ? } ? ? } ? ? public void funn(String ys){//設(shè)置畫的圖形 ? ? ? ? this.xz=ys; ? ? } ? ? public void init(){ ? ? ? ? MyPaiinterPanel mp=new MyPaiinterPanel(image); ? ? ? ? mp.addMouseListener(new MouseAdapter() {//添加監(jiān)聽(tīng) ? ? ? ? ? ? @Override ? ? ? ? ? ? public void mousePressed(MouseEvent e) {//記錄第一次單擊的位置x1,y1 ? ? ? ? ? ? ? ? x1=e.getX(); ? ? ? ? ? ? ? ? y1=e.getY(); ? ? ? ? ? ? } ? ? ? ? ? ? @Override ? ? ? ? ? ? public void mouseReleased(MouseEvent e) {//第二次單擊的位置x2,y2 ? ? ? ? ? ? ? ? x2=e.getX(); ? ? ? ? ? ? ? ? y2=e.getY(); ? ? ? ? ? ? ? ? if(xz.equals("直線")){//兩點(diǎn)確定直線。。。 ? ? ? ? ? ? ? ? ? ? g.drawLine(x1,y1,x2,y2); ? ? ? ? ? ? ? ? }else ? ? ? ? ? ? ? ? if(xz.equals("圓")){ ? ? ? ? ? ? ? ? ? ? g.drawOval(x1,y1,Math.abs(x2-x1),Math.abs(y2-y1)); ? ? ? ? ? ? ? ? }else ? ? ? ? ? ? ? ? if(xz.equals("矩形")){ ? ? ? ? ? ? ? ? ? ? g.drawRect(x1,y1,Math.abs(x2-x1),Math.abs(y2-y1)); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? if(xz.equals("清空")){ ? ? ? ? ? ? ? ? ? ? //jf.dispose(); ? ? ? ? ? ? ? ? ? ? //new paint().init(); ? ? ? ? ? ? ? ? ? ? g.clearRect(0,0,600,600);//橡皮擦 ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? mp.repaint();//刷新畫布 ? ? ? ? ? ? } ? ? ? ? }); ? ? ? ?? ? ? ? ? JMenuBar bar=new JMenuBar();//設(shè)置任務(wù)欄按鈕 ? ? ? ? JMenu jm=new JMenu("顏色"); ? ? ? ? JMenuItem[] item=new JMenuItem[7]; ? ? ? ? item[0]=new JMenu("紅色"); ? ? ? ? item[1]=new JMenu("白色"); ? ? ? ? item[2]=new JMenu("綠色"); ? ? ? ? item[3]=new JMenu("直線"); ? ? ? ? item[4]=new JMenu("圓"); ? ? ? ? item[5]=new JMenu("矩形"); ? ? ? ? item[6]=new JMenu("清空"); ? ? ? ? jm.add(item[0]); ? ? ? ? jm.add(item[1]); ? ? ? ? jm.add(item[2]); ? ? ? ? bar.add(jm); ? ? ? ? JMenu jm1=new JMenu("形狀"); ? ? ? ? jm1.add(item[3]); ? ? ? ? jm1.add(item[4]); ? ? ? ? jm1.add(item[5]); ? ? ? ? jm1.add(item[6]); ? ? ? ? bar.add(jm1); ? ? ? ? for(int i=0;i< item.length;i++){//任務(wù)欄按鈕監(jiān)聽(tīng) ? ? ? ? ? ? int finalI = i; ? ? ? ? ? ? item[i].addMouseListener(new MouseAdapter() { ? ? ? ? ? ? ? ? @Override ? ? ? ? ? ? ? ? public void mouseClicked(MouseEvent e) { ? ? ? ? ? ? ? ? ? ? if(item[finalI].getText().equals("紅色")){ ? ? ? ? ? ? ? ? ? ? ? ? fun("紅色"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? if(item[finalI].getText().equals("白色")){ ? ? ? ? ? ? ? ? ? ? ? ? fun("白色"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? if(item[finalI].getText().equals("綠色")){ ? ? ? ? ? ? ? ? ? ? ? ? fun("綠色"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? if(item[finalI].getText().equals("直線")){ ? ? ? ? ? ? ? ? ? ? ? ? funn("直線"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? if(item[finalI].getText().equals("圓")){ ? ? ? ? ? ? ? ? ? ? ? ? funn("圓"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? if(item[finalI].getText().equals("矩形")){ ? ? ? ? ? ? ? ? ? ? ? ? funn("矩形"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? if(item[finalI].getText().equals("清空")){ ? ? ? ? ? ? ? ? ? ? ? ? funn("清空"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? }); ? ? ? ? } ? ? ? ? jf.setJMenuBar(bar);//設(shè)置任務(wù)欄 ? ? ? ? jf.add(mp); ? ? ? ? jf.setVisible(true); ? ? ? ? jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ? ? ? ? jf.setSize(600,600); ? ? ? ? jf.setLocationRelativeTo(null); ? ? } ? ? public static void main(String[] args) { ? ? ? ? new paint().init();//調(diào)用方法 ? ? } }
下面看效果:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Fluent Mybatis如何做到代碼邏輯和sql邏輯的合一
對(duì)比原生Mybatis, Mybatis Plus或者其他框架,F(xiàn)luentMybatis提供了哪些便利呢?很多朋友對(duì)這一問(wèn)題不是很清楚,今天小編給大家?guī)?lái)一篇教程關(guān)于Fluent Mybatis如何做到代碼邏輯和sql邏輯的合一,一起看看吧2021-08-08Springboot工具類ReflectionUtils使用教程
這篇文章主要介紹了Springboot內(nèi)置的工具類之ReflectionUtils的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-12-12基于Rest的API解決方案(jersey與swagger集成)
下面小編就為大家?guī)?lái)一篇基于Rest的API解決方案(jersey與swagger集成)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08解決SpringCloud Gateway配置自定義路由404的坑
這篇文章主要介紹了解決SpringCloud Gateway配置自定義路由404的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09源碼分析Spring?中?@Qualifier?注解基本用法
這篇文章主要介紹了源碼分析Spring?中?@Qualifier?注解基本用法,在源碼分析的過(guò)程中,也?GET?到?Spring?許多新的玩法,感興趣的小伙伴趕緊去試試吧2023-08-08java如何使用自己的maven本地倉(cāng)庫(kù)詳解
這篇文章主要給大家介紹了關(guān)于java如何使用自己的maven本地倉(cāng)庫(kù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07