一、画板实现需要注意的地方
1、如果要设置线条的颜色,只要在调用Graphics绘制方法前,调用它的setColor方法即可。
2、显示颜色选择器的代码:
//这是JColorChooser中的一个public static方法,可直接调用
this.color = javax.swing.JColorChooser.showDialog(null,"请选择颜色",java.awt.Color.black);
3、取得界面上的画布对象,一定要在界面setVisible后取得,否则取得的为null。
二、画板代码(其中涉及到了监听器的使用):
*******************************主函数所在类****************************
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* 画板界面类,该类要继承自JFrame
*
*/
public class DrawBorder extends JFrame {
/**
* 程序的入口主函数
*/
public static void main(String[] args) {
DrawBorder db = new DrawBorder();
db.initGUI();
}
/**
* 初始化界面的方法
*/
private void initGUI() {
// 设置窗体对象的属性
this.setSize(new Dimension(600, 500));
this.setTitle("简单画板");
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
// this.setLayout(new BorderLayout());
JPanel northPanel = new JPanel();
JButton btnLine = new JButton("Line");
JButton btnRect = new JButton("Rect");
JButton btnOval = new JButton("Oval");
JButton btnRoundRect = new JButton("RoundRect");
JButton btnTriang = new JButton("Triang");
// btnTriang.setActionCommand("");
northPanel.add(btnLine);
northPanel.add(btnRect);
northPanel.add(btnOval);
northPanel.add(btnRoundRect);
northPanel.add(btnTriang);
/**
* 使用匿名内部类来实现动作事件处理类
*/
ActionListener al = new ActionListener(){
public void actionPerformed(ActionEvent e) {
shapeType = e.getActionCommand();
System.out.println("当前点击的按钮时:"+shapeType);
}
};
//给事件源添加动作监听器,绑定事件处理类的对象
btnLine.addActionListener(al);
btnRect.addActionListener(al);
btnOval.addActionListener(al);
btnRoundRect.addActionListener(al);
btnTriang.addActionListener(al);
this.add(northPanel,BorderLayout.NORTH);
JPanel drawPanel = new JPanel();
drawPanel.setBackground(Color.WHITE);
this.add(drawPanel,BorderLayout.CENTER);
this.setVisible(true);
//一定要在窗体可见之后才能获取画布,否则获取的画布为null
Graphics g = drawPanel.getGraphics();
//绘制图形的事件处理类
DrawListener dl = new DrawListener(g,this);
//给事件源drawPanel添加鼠标监听器方法,绑定事件出类的对象dl
drawPanel.addMouseListener(dl);
}
//存储图形的属性
private String shapeType = "Line";
/**
* 获取图形的属性值
* @return 返回shapeType的值
*/
public String getShapeType(){
return shapeType;
}
}
**************************继承鼠标监听器类******************************
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class DrawListener implements MouseListener {
// 声明绘制图形的对象
private Graphics g;
// 鼠标按下的坐标值
private int x1, y1, x2, y2;
// 图形
private DrawBorder db;
/**
* 构造方法
* @param g绘制图形的对象
*/
public DrawListener(Graphics g,DrawBorder db){
this.g = g;
this.db =db ;
}
/**
* 在事件源上发生鼠标单击操作的时候执行该方法
*/
public void mouseClicked(MouseEvent e) {
}
/**
* 在事件源上发生鼠标按下操作的时候执行该方法
*/
public void mousePressed(MouseEvent e) {
// 获取鼠标按下时的坐标值
x1 = e.getX();
y1 = e.getY();
}
/**
* 在事件源上发生鼠标释放操作的时候执行该方法
*/
public void mouseReleased(MouseEvent e) {
// 获取鼠标释放时的坐标值
x2 = e.getX();
y2 = e.getY();
//System.out.println(g+" "+x1+" "+y1+" "+x2+" "+y2);
if(db.getShapeType().equals("Line")){
//绘制一条直线
g.drawLine(x1, y1, x2, y2);
}else if(db.getShapeType().equals("Rect")){
g.drawRect(x1, y1, Math.abs(x1-x2), Math.abs(y1-y2));
}
}
/**
* 鼠标移动到事件源上时执行该方法 只执行一次
*/
public void mouseEntered(MouseEvent e) {
}
/**
* 鼠标离开到事件源上时执行该方法 只执行一次
*/
public void mouseExited(MouseEvent e) {
}
}
分享到:
相关推荐
网络共享画板+UDP方式+用户列表实时刷新
画图 粒子碰撞+字符动画+画板+手写 Python
基于Qt的简易画板+源代码+文档说明 -------- 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍>...
计算机图形学大作业, Bezier / B样条曲线 画板+源代码+文档说明 题目 实现一个画曲线软件,能显示点坐标和曲线方程(要求能显示点坐标和曲线方程,能选择样条曲线的次数,能画多段曲线) 码云仓库 实现 基于MFC, ...
开发的画板功能,带比例尺,可以显示直线数值。
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末...商品追溯二维码画板工具源码+项目说明.zip商品追溯二维码画板工具源码+项目说明.zip
07 基于python实现超级画板完整的代码+说明文档+可执行程序exe).rar07 基于python实现超级画板完整的代码+说明文档+可执行程序exe).rar07 基于python实现超级画板完整的代码+说明文档+可执行程序exe).rar07 基于...
基于Vue、fabric、webRTC开发的音视频会议画板(源码+项目说明).zip基于Vue、fabric、webRTC开发的音视频会议画板(源码+项目说明).zip基于Vue、fabric、webRTC开发的音视频会议画板(源码+项目说明).zip基于Vue...
《超级画板》程序使用说明 在PyCharm中运行《超级画板》即可进入如图1所示的系统主界面。在该界面中,通过左侧的工具栏可以选择所要进行的操作。 具体的操作步骤如下: 超级画板的主要功能都集中在一个窗口上实现,...
超级画板程序Python源代码+可执行文件+使用说明
画板
WPF + WCF画板聊天程序,即时通讯
as3 flash 画板源码、直线、画文输入本框、画矩形、画直线、橡皮 可以像在桌面画矩形一样的画一个文本输入框。有点击按钮可以有类似ctrl+z,ctrl+y的功能。全部清除功能。可以演示。
新版的 Z+Z 超级画板 (Ssp + Sg),由于以前分析过算法,加上有人想要新版的软件,因此顺手做了一个注册版。 两个软件都是直接运行,无需注册。
模拟windows画板,虽然没有windows画板那么功能强大,但基本功能还是可以实现的!
超级画板的主要功能都集中在一个窗口上实现,在这个窗口中,默认选择的是画笔,用户在设置画笔颜色和尺寸时,可以在窗口左侧的矩形框中显示预览效果,选择完成后,即可在右侧画板中绘制图形;而如果选择橡皮,则可以...
几何画板最强中文永久免费5.06版本安装包下载解压安装即可几何画板最强中文永久免费5.06版本安装包下载解压安装即可几何画板最强中文永久免费5.06版本安装包下载解压安装即可几何画板最强中文永久免费5.06版本安装包...
C#写的GDI+画板,支持移动画出的图形,同时支持画直线曲线椭圆矩形橡皮擦改变颜色等功能
(1)给左画板中的按钮组中的每个按钮添加鼠标监听器; (2)点击不同按钮,绘制不同的图形; (3)给左子面板中的每个颜色按钮添加鼠标监听器; (4)根据下面板中选中的颜色按钮,来获取按钮的背景颜色,并将该...