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

Java實(shí)現(xiàn)簡(jiǎn)易畫圖板

 更新時(shí)間:2022年01月11日 07:37:27   作者:Benjamin.  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)易畫圖板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java實(shí)現(xiàn)簡(jiǎn)易畫圖板的具體代碼,供大家參考,具體內(nèi)容如下

這是Windows系統(tǒng)自帶的畫圖板,我們就是模仿著用Java去寫一個(gè)簡(jiǎn)易版的畫圖板。

效果圖

圖中的四個(gè)顏色按鈕是可以配合要畫的圖形而改變線條顏色的,而且每次打開顏色按鈕的顏色都是隨機(jī)的。目前畫圖什么的都沒(méi)什么問(wèn)題,只是一些細(xì)節(jié)沒(méi)有去完全修復(fù)了,但不影響使用,再加上近段時(shí)間有點(diǎn)太忙,就沒(méi)有去完善相關(guān)細(xì)節(jié)了,有興趣的小伙伴可以評(píng)論區(qū)幫忙提出指正意見(jiàn)哈。

畫圖板UI界面代碼

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.Graphics;
import java.util.Random;

public class DrawGraphics {
?? ?Random rand=new Random();
?? ? public static void main(String []args){
?? ??? ?DrawGraphics draw=new DrawGraphics();
?? ??? ?draw.displayUI();
?? ? }
?? ?public JButton getButton(String s,DrawListener dl,boolean flag){
?? ??? ?JButton btn=new JButton();
?? ??? ?//每個(gè)按鈕的尺寸
?? ??? ?Dimension dim=new Dimension(200,50);
?? ??? ?//如果flag為true,創(chuàng)建文字按鈕,否則創(chuàng)建顏色按鈕
? ? ? ? if(flag){
? ? ? ? ?? ?btn=new JButton(s);
? ? ? ? }
? ? ? ? else{
? ? ? ? ?? ?Color c= new Color(rand.nextInt(256),rand.nextInt(256),rand.nextInt(256));
? ? ? ? ?? ?btn.setBackground(c);
? ? ? ? }
? ? ? ? btn.setPreferredSize(dim);
? ? ? ? btn.addActionListener(dl);
?? ??? ?return btn;
?? ?}
?? ?
?? ?public void displayUI(){
?? ??? ?JFrame frame=new JFrame();
?? ??? ?FlowLayout f1=new FlowLayout();
?? ??? ?
?? ??? ?frame.setTitle("畫圖板");
?? ??? ?frame.setSize(1000,1000);
?? ??? ?frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
?? ??? ?frame.setLocationRelativeTo(null);
?? ??? ?frame.setLayout(f1);
?? ??? ?frame.setResizable(false);
?? ??? ?
?? ??? ?DrawListener dl=new DrawListener();
?? ??? ?
?? ??? ?String []name={"直線","矩形","圓","三角形"};
?? ??? ?for(int i=0;i<name.length;i++){
?? ??? ??? ?
?? ??? ??? ?frame.add(getButton(name[i],dl,true));
?? ??? ?}
?? ??? ?for(int i=0;i<name.length;i++){
?? ??? ??? ?frame.add(getButton("",dl,false));
?? ??? ?}
?? ??? ?
?? ??? ?frame.addMouseListener(dl);
?? ??? ?frame.setVisible(true);
?? ??? ?// 獲取畫筆 --- 必須要放在 可視化之后
?? ??? ?Graphics g=frame.getGraphics();
?? ??? ?dl.g=g;
?? ??? ?dl.btnstr=name[0];
?? ??? ?dl.name=name;
?? ??? ?
?? ?}
}

畫圖板UI監(jiān)聽(tīng)器代碼

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;

import java.awt.Color;
import java.awt.Graphics;

public class DrawListener implements MouseListener,ActionListener{

?? ?Graphics g;
?? ?int x1,x2,y1,y2;
?? ?int x3,x4,x5,y3,y4,y5;
?? ?int count=0;
?? ?String []name;
?? ?String btnstr;
?? ?
?? ?int i;
?? ?@Override
?? ?public void actionPerformed(ActionEvent e) {
?? ??? ?btnstr=e.getActionCommand();
?? ??? ?if(btnstr.equals("")){
?? ??? ??? ?JButton btn=(JButton)e.getSource();
?? ??? ??? ?Color btnColor=btn.getBackground();
?? ??? ??? ?g.setColor(btnColor);
?? ??? ?}
?? ??? ?else {
?? ??? ??? ?for(i=0;i<name.length;i++){
?? ??? ??? ??? ?if(btnstr.equals(name[i]))break;
?? ??? ? ? ?}?? ?
?? ??? ?}
?? ??? ??? ??? ?
?? ?}
?? ?
?? ?@Override
?? ?public void mouseClicked(MouseEvent e) {
?? ??? ?if(btnstr.equals(name[3])||btnstr.equals("")){
?? ??? ?g.drawOval(e.getX()-4, e.getY()-4, 8, 8);
?? ??? ?if(count==0){
?? ??? ??? ?x3=e.getX();
?? ??? ??? ?y3=e.getY();
?? ??? ??? ?count++;
?? ??? ?}
?? ??? ?else if(count==1){
?? ??? ??? ?x4=e.getX();
?? ??? ??? ?y4=e.getY();
?? ??? ??? ?g.drawLine(x3, y3, x4, y4);
?? ??? ??? ?count++;
?? ??? ?}
?? ??? ?else if(count==2){
?? ??? ??? ?x5=e.getX();
?? ??? ??? ?y5=e.getY();
?? ??? ??? ?g.drawLine(x3, y3, x5, y5);
?? ??? ??? ?g.drawLine(x4, y4, x5, y5);
?? ??? ??? ?count=0;
?? ??? ?}
?? ??? ?}?? ??? ?
?? ?}

?? ?@Override
?? ?public void mousePressed(MouseEvent e) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?x1=e.getX();
?? ??? ?y1=e.getY();
?? ?}

?? ?@Override
?? ?public void mouseReleased(MouseEvent e) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?
?? ??? ?x2=e.getX();
?? ??? ?y2=e.getY();
?? ??? ?if(btnstr.equals(name[0])||btnstr.equals("")){
?? ??? ??? ?g.drawLine(x1, y1, x2, y2);
?? ??? ?}
?? ??? ?else if(btnstr.equals(name[1])||btnstr.equals("")){
?? ??? ??? ?g.drawRect(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y1-y2));
?? ??? ?}
?? ??? ?else if(btnstr.equals(name[2])||btnstr.equals("")){

?? ??? ??? ?g.drawOval(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y1-y2));
?? ??? ?}
?? ? ? ?
?? ?}

?? ?@Override
?? ?public void mouseEntered(MouseEvent e) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?
?? ?}

?? ?@Override
?? ?public void mouseExited(MouseEvent e) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?
?? ?}
? ? ? ?
}

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

相關(guān)文章

  • springBoot整合CXF并實(shí)現(xiàn)用戶名密碼校驗(yàn)的方法

    springBoot整合CXF并實(shí)現(xiàn)用戶名密碼校驗(yàn)的方法

    這篇文章主要介紹了springBoot整合CXF并實(shí)現(xiàn)用戶名密碼校驗(yàn)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Spring實(shí)現(xiàn)自定義注解處理器解析和處理注解

    Spring實(shí)現(xiàn)自定義注解處理器解析和處理注解

    這篇文章主要介紹了Spring實(shí)現(xiàn)自定義注解處理器解析和處理注解,注解在現(xiàn)代Java編程中扮演了至關(guān)重要的角色,無(wú)論是簡(jiǎn)化代碼、增強(qiáng)可讀性,還是將元數(shù)據(jù)與業(yè)務(wù)邏輯分離,注解都讓我們的代碼更加優(yōu)雅和靈活,需要的朋友可以參考下
    2024-10-10
  • Java工作中常見(jiàn)的并發(fā)問(wèn)題處理方法總結(jié)

    Java工作中常見(jiàn)的并發(fā)問(wèn)題處理方法總結(jié)

    這篇文章主要介紹了Java工作中常見(jiàn)的并發(fā)問(wèn)題處理方法總結(jié),文章內(nèi)容講解的很清晰,有不太懂得同學(xué)可以跟著學(xué)習(xí)下
    2021-02-02
  • java實(shí)現(xiàn)輕輕松松控制臺(tái)斗地主的示例代碼

    java實(shí)現(xiàn)輕輕松松控制臺(tái)斗地主的示例代碼

    這篇文章主要介紹了java實(shí)現(xiàn)輕輕松松控制臺(tái)斗地主,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Spring?boot?admin?服務(wù)監(jiān)控利器詳解

    Spring?boot?admin?服務(wù)監(jiān)控利器詳解

    這篇文章主要介紹了Spring?boot?admin?服務(wù)監(jiān)控利器詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Zookeeper中如何解決zookeeper.out文件輸出位置問(wèn)題

    Zookeeper中如何解決zookeeper.out文件輸出位置問(wèn)題

    這篇文章主要介紹了Zookeeper中如何解決zookeeper.out文件輸出位置問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 詳解java集成支付寶支付接口(JSP+支付寶20160912)

    詳解java集成支付寶支付接口(JSP+支付寶20160912)

    本篇文章主要介紹了java集成支付寶支付接口,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • Java string.trim()究竟去掉了什么

    Java string.trim()究竟去掉了什么

    這篇文章主要介紹了Java string.trim()究竟去掉了什么,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java RabbitMQ的TTL和DLX全面精解

    Java RabbitMQ的TTL和DLX全面精解

    過(guò)期時(shí)間TTL表示可以對(duì)消息設(shè)置預(yù)期的時(shí)間,在這個(gè)時(shí)間內(nèi)都可以被消費(fèi)者接收獲??;過(guò)了之后消息將自動(dòng)被刪除。DLX, 可以稱之為死信交換機(jī),當(dāng)消息在一個(gè)隊(duì)列中變成死信之后,它能被重新發(fā)送到另一個(gè)交換機(jī)中,這個(gè)交換機(jī)就是DLX ,綁定DLX的隊(duì)列就稱之為死信隊(duì)列
    2021-09-09
  • JAVA JNI原理詳細(xì)介紹及簡(jiǎn)單實(shí)例代碼

    JAVA JNI原理詳細(xì)介紹及簡(jiǎn)單實(shí)例代碼

    這篇文章主要介紹了JAVA JNI原理的相關(guān)資料,這里提供簡(jiǎn)單實(shí)例代碼,需要的朋友可以參考下
    2016-12-12

最新評(píng)論

济源市| 宁都县| 翁牛特旗| 龙南县| 怀化市| 河池市| 德钦县| 集安市| 瑞昌市| 铜陵市| 马关县| 涪陵区| 成都市| 乐东| 广河县| 揭西县| 济阳县| 公主岭市| 荆州市| 高邮市| 修水县| 呼图壁县| 平武县| 云霄县| 浙江省| 曲周县| 方山县| 新疆| 新闻| 高唐县| 财经| 宝丰县| 拉萨市| 阳春市| 老河口市| 上蔡县| 广灵县| 上饶县| 宜兰县| 来宾市| 探索|