欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

效果圖

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

畫圖板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)聽器代碼

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
?? ??? ?
?? ?}
? ? ? ?
}

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

相關(guān)文章

  • java實(shí)現(xiàn)文件切片和合并的代碼示例

    java實(shí)現(xiàn)文件切片和合并的代碼示例

    這篇文章主要介紹了java實(shí)現(xiàn)文件切片和合并的代碼示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • java實(shí)現(xiàn)簡易飛機(jī)大戰(zhàn)

    java實(shí)現(xiàn)簡易飛機(jī)大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡易飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • spring中JdbcTemplate操作oracle的存儲(chǔ)過程實(shí)例代碼

    spring中JdbcTemplate操作oracle的存儲(chǔ)過程實(shí)例代碼

    JdbcTemplate是Spring對(duì)JDBC的封裝,目的是使JDBC更加易于使用,JdbcTemplate是Spring的一部分,下面這篇文章主要給大家介紹了關(guān)于spring中JdbcTemplate操作oracle的存儲(chǔ)過程的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • 使用feign發(fā)送http請(qǐng)求解析報(bào)錯(cuò)的問題

    使用feign發(fā)送http請(qǐng)求解析報(bào)錯(cuò)的問題

    這篇文章主要介紹了使用feign發(fā)送http請(qǐng)求解析報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • MyBatis寫入Json字段以及Json字段轉(zhuǎn)對(duì)象示例詳解

    MyBatis寫入Json字段以及Json字段轉(zhuǎn)對(duì)象示例詳解

    這篇文章主要給大家介紹了關(guān)于MyBatis寫入Json字段以及Json字段轉(zhuǎn)對(duì)象的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java中List for循環(huán)的6種寫法總結(jié)(推薦)

    Java中List for循環(huán)的6種寫法總結(jié)(推薦)

    下面小編就為大家?guī)硪黄狫ava中List for循環(huán)的6種寫法總結(jié)(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • 如何自定義feign調(diào)用實(shí)現(xiàn)hystrix超時(shí)、異常熔斷

    如何自定義feign調(diào)用實(shí)現(xiàn)hystrix超時(shí)、異常熔斷

    這篇文章主要介紹了自定義feign調(diào)用實(shí)現(xiàn)hystrix超時(shí)、異常熔斷的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring Boot2配置Swagger2生成API接口文檔詳情

    Spring Boot2配置Swagger2生成API接口文檔詳情

    這篇文章主要介紹了Spring Boot2配置Swagger2生成API接口文檔詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • 詳解MyBatis日志如何做到兼容所有常用的日志框架

    詳解MyBatis日志如何做到兼容所有常用的日志框架

    這篇文章主要介紹了詳解MyBatis日志如何做到兼容所有常用的日志框架,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 簡述Springboot @Async 異步方法

    簡述Springboot @Async 異步方法

    這篇文章主要介紹了Springboot @Async 異步方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05

最新評(píng)論