一、画板实现需要注意的地方
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) {
}
}
分享到:
相关推荐
5. `js`:这个目录很可能包含了实现画板功能的JavaScript文件,可能包括一个或多个文件,比如处理画布操作的核心逻辑、事件监听器等。 总的来说,这个项目展示了如何结合JavaScript、jQuery和CSS来创建一个简单的...
此外,为了响应用户的交互,比如鼠标点击和拖动,程序需要添加事件监听器。例如,当用户按下鼠标并移动时,可以通过MouseDown、MouseMove和MouseUp事件来追踪鼠标的动作,计算出绘制图形的起点和终点,然后调用对应...
2. 使用链接器(如`ar`工具)将对象文件打包成静态库。 3. 将静态库导入到项目中,通过设置项目的依赖项,使其在编译时自动链接到目标应用。 在本示例中,源码已经实现了画板功能,并能编译为静态库,这意味着...
(1)给左画板中的按钮组中的每个按钮添加鼠标监听器; (2)点击不同按钮,绘制不同的图形; (3)给左子面板中的每个颜色按钮添加鼠标监听器; (4)根据下面板中选中的颜色按钮,来获取按钮的背景颜色,并将该...
在画板程序中,可能包含各种控件,如按钮(用于触发绘制动作)、选择器(用于选择要绘制的图形类型)、以及可能的坐标系或者颜色选择器等。 2. **程序框图**:这是LabVIEW程序的逻辑部分,由一系列节点(函数、子VI...
4. **MouseMotionListener**:为了捕捉用户的鼠标移动事件,我们需要添加此监听器。当鼠标在画布上移动时,我们可以获取鼠标的位置并根据这些位置绘制线条。 5. **颜色选择和画笔粗细**:为了模拟真实的画板,我们...
4. **事件监听**:为了使画板具备交互性,我们需要添加事件监听器,例如鼠标监听器(MouseListener)和鼠标移动监听器(MouseMotionListener)。通过监听鼠标点击、拖动等事件,可以控制画笔的起始和结束位置,实现...
3. **事件监听器**:Java GUI应用中的交互通常是通过事件监听器来处理的。例如,鼠标点击、移动等事件可以触发特定的绘图操作。在画板程序中,可能添加了MouseListener和MouseMotionListener来响应用户的鼠标输入。 ...
10. **事件监听和回调**:对于按钮点击、颜色选择等事件,开发者需要设置监听器并实现相应的回调方法。 11. **测试和调试**:在项目开发过程中,单元测试、集成测试以及在不同设备和Android版本上的兼容性测试都是...
这就需要实现MouseListener和MouseMotionListener接口,监听鼠标事件。例如,`mousePressed()`, `mouseDragged()`和`mouseReleased()`方法可以用来追踪用户的绘画动作。 四、实例化与布局管理 在Java程序中,我们...
3. **监听鼠标事件**:为了实现画板功能,我们需要捕获鼠标移动、按下和释放等事件。这些事件可以让我们知道用户在何时何地进行了绘制操作。例如,当鼠标按钮按下时,我们可以记录起始坐标;当鼠标移动时,使用当前...
这需要实现颜色选择器,并将所选颜色应用到图形上。 5. **撤销与重做**:为了提高用户体验,图形画板通常包含撤销和重做功能,以便用户可以纠正错误或恢复之前的绘图状态。这需要记录每一次的绘图操作,以便在需要...
在这个画板应用中,可能使用了某种布局管理器来放置画板组件。 综上所述,"java swing简单画板"项目涵盖了Java GUI编程的基础知识,包括Swing组件的使用、绘图功能的实现、事件处理以及布局管理。开发者通过这些...
同时,可以添加鼠标事件监听器,使得用户可以通过鼠标交互来控制绘制。例如,点击鼠标左键开始绘制,释放时结束绘制,这样就能实现一个简单的画图应用。 总之,Java提供了强大的图形绘制能力,结合AWT和Swing库,...
为了实现自定义图形的添加,开发者可能还引入了鼠标监听器(MouseListener和MouseMotionListener),通过监听鼠标的点击、移动和释放事件,动态地在JPanel上绘制线条或图形。 此外,为了保存用户的画作,开发者可能...
2. **事件监听器**:为了使画板具有交互性,开发者需要添加事件监听器来响应用户的鼠标和键盘输入。例如,当用户按下鼠标并移动时,可以触发绘制线条的事件。这通常通过实现`MouseListener`和`MouseMotionListener`...
这些插件提供了一套完整的绘图解决方案,包括颜色选择器、橡皮擦、保存/加载等功能,使得开发更加容易。 5. **js文件**:压缩包中的"js"文件很可能是实现涂鸦功能的JavaScript代码。它可能包含了上述所有逻辑,如...