package com.kaige123.paint;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PaintJFrame extends JFrame implements ActionListener {
JButton jb1 = new JButton("线");
JButton jb2 = new JButton("矩形");
JButton jb3 = new JButton("圆");
JButton jb4 = new JButton("颜色");
JButton jb5 = new JButton("保存");
Color selectColor = Color.black;
MyJPanel jp = new MyJPanel(this);
public void actionPerformed(ActionEvent e) {
if (jb1 == e.getSource()) {
jp.setType("线");
} else if (jb2 == e.getSource()) {
jp.setType("矩形");
} else if (jb3 == e.getSource()) {
jp.setType("圆");
} else if (jb4 == e.getSource()) {
JColorChooser jc = new JColorChooser();
selectColor = jc.showDialog(this, "请选择颜色", selectColor);
jb4.setBackground(selectColor);
} else if (jb5 == e.getSource()) {
JFileChooser jf = new JFileChooser();
jf.showSaveDialog(this);
jp.save(jf.getSelectedFile());
}
}
public PaintJFrame() {
this.getContentPane().setBackground(Color.BLACK);
jp.setBackground(Color.white);
jp.setBounds(65, 10, 515, 550);
this.add(jp);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
jb4.addActionListener(this);
jb5.addActionListener(this);
jb1.setBounds(1, 10, 60, 30);
jb2.setBounds(1, 40, 60, 30);
jb3.setBounds(1, 70, 60, 30);
jb4.setBounds(1, 100, 60, 30);
jb5.setBounds(1, 130, 60, 30);
this.add(jb1);
this.add(jb2);
this.add(jb3);
this.add(jb4);
this.add(jb5);
jb4.setBackground(selectColor);
this.setLayout(null);
this.setTitle("凯哥制作的画板 欢迎使用 www.kaige123.com ");
this.setSize(600, 600);
this.setVisible(true);
}
public static void main(String[] args) {
new PaintJFrame();
}
}
package com.kaige123.paint;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Vector;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class MyJPanel extends JPanel implements MouseListener {
public class Info {
String type = "";
int x;
int y;
int x1;
int y1;
Color c;
}
private PaintJFrame jf = null;
MyJPanel(PaintJFrame jf) {
this.jf = jf;
this.addMouseListener(this);
}
private String type;
public void setType(String type) {
this.type = type;
}
int x, y;
public void mousePressed(MouseEvent e) {
x = e.getX();
y = e.getY();
}
Vector<Info> infos = new Vector<Info>();
public void paint(Graphics g) {
super.paint(g);
for (Info i : infos) {
g.setColor(i.c);
if (i.type.equalsIgnoreCase("线")) {
g.drawLine(i.x, i.y, i.x1, i.y1);
} else if (i.type.equalsIgnoreCase("矩形")) {
g.drawRect(i.x, i.y, i.x1, i.y1);
} else if (i.type.equalsIgnoreCase("圆")) {
g.drawOval(i.x, i.y, i.x1, i.y1);
}
}
}
public void save(File f) {
BufferedImage image = new BufferedImage(this.getWidth(),
this.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, this.getWidth() + 1, this.getHeight() + 1);
for (Info i : infos) {
g.setColor(i.c);
if (i.type.equalsIgnoreCase("线")) {
g.drawLine(i.x, i.y, i.x1, i.y1);
} else if (i.type.equalsIgnoreCase("矩形")) {
g.drawRect(i.x, i.y, i.x1, i.y1);
} else if (i.type.equalsIgnoreCase("圆")) {
g.drawOval(i.x, i.y, i.x1, i.y1);
}
}
try {
ImageIO.write(image, "jpeg", f);
} catch (Exception e) {
}
}
public void mouseReleased(MouseEvent e) {
int x1 = e.getX();
int y1 = e.getY();
Graphics2D g = (Graphics2D) this.getGraphics();
g.setColor(jf.selectColor);
Info info = new Info();
info.c = jf.selectColor;
info.type = type;
if (type.equalsIgnoreCase("线")) {
g.drawLine(x, y, x1, y1);
info.x = x;
info.y = y;
info.x1 = x1;
info.y1 = y1;
} else if (type.equalsIgnoreCase("矩形")) {
g.drawRect(x, y, x1 - x, y1 - y);
info.x = x;
info.y = y;
info.x1 = x1 - x;
info.y1 = y1 - y;
} else if (type.equalsIgnoreCase("圆")) {
g.drawOval(x, y, x1 - x, y1 - y);
info.x = x;
info.y = y;
info.x1 = x1 - x;
info.y1 = y1 - y;
}
infos.add(info);
}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}
相关推荐
WS2812面板灯制作资料WS2812面板灯制作资料WS2812面板灯制作资料WS2812面板灯制作资料WS2812面板灯制作资料WS2812面板灯制作资料WS2812面板灯制作资料WS2812面板灯制作资料WS2812面板灯制作资料WS2812面板灯制作资料...
标题中的“用C#做的简单画图面板”指的是利用C#编程语言开发的一个基础的图形绘制界面。在C#中,可以使用Windows Forms或WPF(Windows Presentation Foundation)框架来创建用户界面,其中包含了用于画图的功能。在...
【S4M_Xtreme_Rev4:面板制作详解】 S4M_Xtreme_Rev4 是一个专门针对moto p2k(05)系列手机的面板修改和制作工具,旨在帮助用户自定义和个性化他们的手机界面。这款工具对于喜欢探索手机内部设置和追求独特视觉体验...
3. **制作面板的薄膜条件**:制作面板的薄膜需要满足一系列条件,包括良好的外观、较好的耐候性和耐化学性、尺寸稳定性以及适当的弹性等。常用的薄膜材料包括聚碳酸酯(PC)、聚氯乙烯(PVC)、聚酯及聚胺酯等。 #### ...
### 手工制作PCB双面板详解 #### 一、引言 在电子技术领域,印刷电路板(Printed Circuit Board,简称PCB)作为电子设备的重要组成部分,扮演着连接和支撑各种电子元器件的关键角色。对于DIY爱好者或者小规模电子...
js 无限切换面板 js 无限切换面板,javascript 制作切换面板
JIRA过滤器的制作详细步骤,JIRA面板制作的详细步骤,主要针对初学JIRA的童鞋,和不熟悉JIRA项目管理过程的童鞋
运用streamlit模块制作数据面板,包含工具栏以及主页面,将数据直观呈现。
本教程将深入讲解如何使用jQuery来创建一个滑动面板,这是一种常见的网页交互元素,常用于导航菜单、侧边栏或内容展示。 滑动面板的基本原理是通过改变元素的CSS属性,如宽度、高度或者位置,来实现元素的动态显示...
2. **材料选择与工艺流程**:讨论适合制作面板互锁纸箱的材料特性,如纸张的厚度、强度、耐水性等,以及制造过程中的裁剪、折叠、粘合等工艺。 3. **承载能力与耐用性分析**:分析这种纸箱在不同负载下的表现,评估...
1. 面板制造:采用优质材料如金属、复合材料或混凝土等,按照预设尺寸和形状制作面板。 2. 连接系统设计:开发出便捷的连接件,如插销、卡扣或螺栓连接,以便于面板间的快速固定。 3. 防水与密封处理:在面板边缘...
3. **实体建模**:在草图基础上,学习者会学习如何拉伸、旋转或扫掠来生成三维模型,例如制作面板的厚度和凸起的按钮。 4. **细节设计**:教程会介绍如何添加细节特征,如刻度线、文字标注、符号等,这些都是微波炉...
随着科技的发展,人们对居住和工作环境的要求不断提高,中央空调系统作为调节室内气候的重要设备,其控制面板的智能化程度直接影响到用户体验。为解决现有空调面板操作不便及易误触的问题,一种新型的中央空调智能...
采用抗静电材料制作面板,可以减少静电的产生和积累。同时,面板上的按键、触摸屏等部件也需要考虑静电防护,例如使用ESD保护元器件,以防止静电放电时对敏感电路的破坏。 电子装置的内部设计同样重要。电路板上的...
SEG-Grasshopper实例,在幕墙道路上更近一布补补!! 01.说明 ...23.实例应用由骨架制作面板 24.实例操作格栅匹配 25.实例操作玻璃肋匹配 26.由平面图生成三维模型 27.制作单元体01 28.制作单元体02
但是作为光面材料,一经在背面印刷后,色彩会显得更为鲜艳夺目,在装饰性要求较强且又不需经常触动的场合,往往选择光面材料制作面板,或者由于某些显示区域如 LCD 液晶显示屏的特殊需要而考虑,选用光面材料较为...
如果你需要查看示例代码,可以从压缩包文件“css+javascript制作tab面板”中找到详细的实现。这个压缩包应该包含HTML、CSS和JavaScript文件,你可以直接运行它们以看到效果。通过理解和修改这些代码,你可以进一步...
在本篇《Axure教程:制作APP折叠面板》中,我们将深入探讨如何使用Axure RP这一原型设计工具来创建常见的移动端APP组件——折叠面板。折叠面板,又称手风琴组件,常用于有限空间内的信息组织,允许用户按需展开或...
主要用途:业余DIY制作面板的位置布局(如制作的外壳面,背板,侧板) 重要功能:可支持雕颏机直接铣雕出需要的面板 功能特色:简单易用,特别是DIY时制作仪表的表盘 建议方法:普通用户可以用热转印方式转印...
面板设计面板设计软件Front designer V3.0完整版仪器面板_FrontDesigner_V3.0完整版仪器面板_FrontDesigner_V3.0完整版仪器面板_FrontDesigner_V3.0