java绘图模式_java基于设计模式的绘图程序(源码)

本文介绍了一个使用设计模式(装饰模式、策略模式、桥梁模式)实现的Java画图程序。程序能绘制基本图形,并支持图形操作如选择、移动、缩放、颜色和线型改变等,还具备清屏功能。核心代码展示了如何通过监听按钮事件来切换不同图形的绘制。
摘要由CSDN通过智能技术生成

【实例简介】1.需求分析 该系统是一个画图程序,我们要用设计模式的思想来设计系统结构,然后实现基本图形的绘制功能。 1.1 设计模式要求 至少在其中运用 3 种模式,其中涉及到的模式有装饰模式、策略模式、桥梁模式三种。 1.2 画图基本要求 能实现基本图形的绘制功能 1.3 画图高级要求 实现图形的操作(如选取、移动、放大、缩小、改变颜色、改变线形等)和持久化

【实例截图】

6feca8015488f816e37a6826e4c352fe.png

59983d54c1708e44b8eae9fc10bd37cf.png

【核心代码】

package jdgc;

import java.awt.BorderLayout;

import java.awt.Graphics;

import java.awt.Color;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.JButton;

import javax.swing.JColorChooser;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class Main {

static Color c;

static int x = 0;

static int y = 0;

static String a;

public static void main(String []args){

final JFrame jf = new JFrame("绘图");

jf.setSize(1000,700);

jf.setLocation(500,300);

//边界布局

jf.setLayout(new BorderLayout() );

final JPanel panel1= new JPanel();

panel1.setSize(950,700);

panel1.setLocation(50,50);

panel1.setBackground(Color.white);

//panel1.setLayout(null);

final JPanel panel2= new JPanel();

panel2.setSize(700,40);

panel2.setLocation(0,0);

panel2.setBackground(Color.gray);

final JButton bj = new JButton("矩形");

bj.setSize(100,35);

bj.setLocation(0,0);

final JButton by = new JButton("圆形");

by.setSize(100,35);

by.setLocation(100,0);

final JButton bs = new JButton("三角形");

bs.setSize(100,35);

bs.setLocation(200,0);

final JButton cl = new JButton("清屏");

bs.setSize(100,35);

bs.setLocation(300,0);

final JButton co = new JButton("颜色");

bs.setSize(100,35);

bs.setLocation(400,0);

panel2.add(bj);

panel2.add(by);

panel2.add(bs);

panel2.add(cl);

panel2.add(co);

jf.add(panel1,BorderLayout.CENTER);

jf.add(panel2,BorderLayout.NORTH);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

jf.setVisible(true);//设置窗体可见

bj.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

a ="1";

}

});

by.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

a ="2";

}

});

bs.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

a ="3";

}

});

cl.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

panel1.repaint();

}

});

co.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

c = JColorChooser.showDialog(null, "Choose a Color", co.getForeground());

}

});

panel1.addMouseListener(new MouseAdapter(){

public void mousePressed(MouseEvent e) {//鼠标按下

x = e.getX();

y = e.getY();

}

public void mouseReleased(MouseEvent e) {//鼠标释放

Graphics g = panel1.getGraphics();//画笔

drawProduct dp = drawFactory.create(a);

dp.paint(g);

}

});

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值