编写一个java画图软件 java编写画图软件 - 电脑 - 【南平电脑网】_南平电脑维修_南平笔记本电脑维修_监控安装_市区上门维修
公司动态

编写一个java画图软件 java编写画图软件

摘要:不会java,想学会用java编写一个画图软件,求指教 import java awt BorderLayout; import java awt Color; import java awt Gra...

发布日期:2020-12-08

编写一个java画图软件

不会java,想学会用java编写一个画图软件,求指教

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.awt.geom.Line2D; import java.util.Vector; import javax.swing.JFrame; import javax.swing.JPanel; class LinePanel extends JPanel{ private static final long serialVersionUID = 1L; private Vector lines = new Vector ();//存储画板上所有的直线 private Line2D line = new Line2D.Double() ; private Line2D cur = new Line2D.Double() ;//起点到当前光标的直线 public LinePanel(){ super(); this.setBackground(new Color(255,255,255)); } public void setLines(Vector lines){ this.lines = lines; } public void setCur(Line2D cur){ this.cur =cur; } @Override public void paint(Graphics g){ super.paint(g); Graphics2D g2d = (Graphics2D) g; for(Line2D l2d:lines){ line = l2d; g2d.draw(line); } if(cur!=null){ g2d.draw(cur); } } } public class DrawLine extends JFrame{ private static final long serialVersionUID = 1L; private LinePanel panel; private Vector lines; private Point start; public DrawLine(){ panel= new LinePanel(); lines = new Vector(); this.setBounds(100, 200, 400, 400); this.setLayout(new BorderLayout()); this.add(panel,BorderLayout.CENTER); this.setPanelListener(); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } private void setPanelListener() { panel.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { start = new Point(e.getX(),e.getY()); } @Override public void mouseReleased(MouseEvent e) { Line2D line = new Line2D.Double(start.x,start.y,e.getX(),e.getY()); lines.add(line); panel.setLines(lines); line = null; } }); panel.addMouseMotionListener(new MouseMotionAdapter(){ @Override public void mouseDragged(MouseEvent e) { panel.setCur(new Line2D.Double(start.x,start.y,e.getX(),e.getY())); panel.repaint(); } }); } public static void main(String[] args) { new DrawLine(); } }

请教JAVA编程高手一个问题,如何在面板上绘图?

好像不能在面板上显示背景图片,swing的JPanel不支持,只能用他显示一张大图片。

或者可以自定义swing的显示组件(俺不会);或许可以使用用背景色替代背景图片,象下面的代码:public class Apptest {public Apptest() {}public static void main(String[] args) {javax.swing.JFrame fram=new javax.swing.JFrame("color bg test");fram.setSize(540,320);fram.setDefaultCloseOperation(fram.EXIT_ON_CLOSE);javax.swing.JPanel pan=new javax.swing.JPanel();pan.setBackground(java.awt.Color.pink);fram.add(pan);fram.setVisible(true);}}

用Java如何编写软件的帮助?我用Java编了一个软件。

在主界面

public enum ShapeTypes { LINE, CIRCLE, RECTANGLE}public interface Shape { void paint(Graphics g);}public class Rectangle implements Shape { // 矩形左上角的坐标 private int x, y; // 矩形的宽度和高度 private int width, height; private Color rectangleColor; public Rectangle() { super(); } public Rectangle(int x, int y, int width, int height, Color rectangleColor) { super(); this.x = x; this.y = y; this.width = width; this.height = height; this.rectangleColor = rectangleColor; } @Override public void paint(Graphics g) { g.setColor(rectangleColor); g.drawRect(x, y, width, height); }}public class Line implements Shape { // 直线的起始位置 private int x1, y1; // 直线的终止位置 private int x2, y2; private Color lineColor; public Line(int x1, int y1, int x2, int y2, Color lineColor) { super(); this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; this.lineColor = lineColor; } public Line() { super(); } @Override public void paint(Graphics g) { g.setColor(lineColor); g.drawLine(x1, y1, x2, y2); }}public class Circle implements Shape { // 圆的颜色 private Color circleColor; // 圆心的坐标 private int x, y; // 圆的半径 private int radius; public Circle() { super(); } public Circle(int x, int y, int radius, Color circleColor) { super(); this.circleColor = circleColor; this.x = x; this.y = y; this.radius = radius; } @Override public void paint(Graphics g) { g.setColor(circleColor); // 画弧, 当弧的宽度和高度一致且从0~360度时就是原形了 g.drawArc(x, y, radius, radius, 0, 360); }}public class SketchpadPanel extends Canvas implements MouseListener, MouseMotionListener { private static final long serialVersionUID = -5229161042153132522L; // 鼠标点击起始坐标和当前坐标 private int beginX = 0, beginY = 0, currentX = 0, currentY = 0; // 判断鼠标是否被按下 private boolean isMousePressing = false; // 保存当前的图形, 在撤销和恢复时使用 private final Stack currentShapes = new Stack(); // 保存已经删除过的图形 private final Stack deletedShapes = new Stack(); private ShapeTypes type; private Color color; public SketchpadPanel() { addMouseListener(this); addMouseMotionListener(this); } /** * 撤销方法 */ public void undo() { if (currentShapes.size() > 0) { // 从所有保存过的图形中取出最后一个, 放入到已删除的图形中去 Shape shape = currentShapes.pop(); deletedShapes.push(shape); repaint(); } } /** * 恢复撤销方法 */ public void redo() { if (deletedShapes.size() > 0) { // 从所有删除的图形中取出最后一个, 放入保存的图形中 Shape shape = deletedShapes.pop(); currentShapes.push(shape); repaint(); } } /** * 设置命令 * * @param type */ public void setShapeType(ShapeTypes type) { this.type = type; } /** * 设置颜色 * * @param color */ public void setColor(Color color) { this.color = color; } public void updete(Graphics g) { paint(g); } /** * 绘制画板 */ @Override public void paint(Graphics g) { // 绘制画板 Dimension size = getSize(); int width = size.width; int height = size.height; g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); // 绘制所有图形 Shape shape = null; Enumeration e = currentShapes.elements(); while (e.hasMoreElements()) { shape = e.nextElement(); shape.paint(g); } // 如果当前鼠标没有释放 if (isMousePressing) { g.setColor(color); switch (type) { // 绘制直线 case LINE: g.drawLine(beginX, beginY, currentX, currentY); break; // 绘制矩形 case RECTANGLE: if (currentX if (currentY // 如果当前位置在起始位置的左上方, 则以鼠标当前位置为矩形的左上角位置 g.drawRect(currentX, currentY, beginX - currentX, beginY - currentY); } else { // 如果当前位置在起始位置的左下方, 则以鼠标当前位置的横坐标和起始位置的纵坐标作为矩形的左上角位置 g.drawRect(currentX, beginY, beginX - currentX, currentY - beginY); } } else { if (currentY // 如果当前位置在起始位置的右上方, 则以鼠标起始位置的很坐标和当前位置的纵坐标作为矩形的左上角位置 g.drawRect(beginX, currentY, currentX - beginX, beginY - currentY); } else { // 如果当前位置在起始位置的右下方, 则已起始位置作为矩形的左上叫位置 g.drawRect(beginX, beginY, currentX - beginX, currentY - beginY); } } break; // 绘制圆形 case CIRCLE: // 半径为a*a + b*b的平方根 int radius = (int) Math .sqrt((beginX - currentX) * (beginX - currentX) + (beginY - currentY) * (beginY - currentY)); g.drawArc(beginX - radius / 2, beginY - radius / 2, radius, radius, 0, 360); break; } } } @Override public void mouseClicked(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } /** * 当鼠标按下的时候获得起始坐标 */ @Override public void mousePressed(MouseEvent e) { beginX = e.getX(); beginY = e.getY(); isMousePressing = true; } /** * 当鼠标释放时获得当前坐标 */ @Override public void m...

写一个JAVA作业 用什么软件

推荐:金山画王—为少年儿童准备的多媒体绘画工具 为少年儿童准备的多媒体绘画工具。

绚丽多姿的色彩、眼花缭乱的拼图、奇形怪状的画笔、大大小小的几何板、象魔术师一般的图象处理,还有上百种现成的花鸟昆虫、动物植物、卡通人物、日月星辰、汽车飞机等数不清的造型素材。

……请别担心我们的孩子不会使用,界面所有的按钮都是自动语音提示,即使不识字的孩子也能轻松上手,可以将作品保存、打印。

金山画王会把你的电脑变成顶级的创作画室。

这里唯一的限制就是你的想象力。

主要功能简介: 超级仿真画笔工具: 叫人惊眩的三维仿真外观,还有与真笔真纸一样的效果,毛笔,水彩笔,素描笔,麦克笔,喷枪...... 让你画到疯狂! 卡通帖图: 一百多幅精心挑选的卡通图库和组合式背景让你任意组合出梦中的图画! 有趣的魔术棒: 指到那儿,奇迹就出现在那里,马良的神笔也不过如此! 精巧的画册: 完全自动的存盘功能,把您的作品整整齐齐的安放在画夹里, 不必去学习怎样存盘怎样读取文件,要取出画稿,要删除只是弹指一挥间的方便。

更多更详细说明请参见: 1、史家胡同小学 2、电脑报 2004版本说明: 金山此次精心打造的这款新品,不仅在以前基础上增强原有的各项基本功能,可以让小朋友们随心所欲运用喷笔、滤镜、魔力棒等40多种绘画、特技工具进行大胆创作,还可以利用软件新增的750幅人物角色、动植物、动画等图片素材随意组合,而且还新增了分层画画 、绘画过程录制等更加人性化的功能,更加适合所有爱好绘画的朋友们。

全新上市的金山画王2004在图形绘制方面与效果处理方面都增强了原有功能,而且还扩充了大家一直都十分喜欢的“图库”和“仙女袋”资料。

现在绘画者不仅可利用喷笔、水彩笔、麦克笔、区域渐变倒色、圆形倒色以及各种几何图形等数十种绘画工具随意绘制各种图 形;还可利用滤镜、分形、魔力棒等对图形进行各种加工;文字工具还可录入文字并可随意调节字体、色彩和大小。

同时,朋友们还可利用在效果处理方面加强的“暗房” 功能,调整整张图画的明亮度、色彩度、透明度,随意转换模式,进行色彩互换等。

其中更为有意思的是,此次新增加的分层画画功能,让我们可以像Photoshop一样创作出需要许多复杂组合的作品,这就更可以让聪明的小朋友们自由发挥无限想象力从多达750 张的静态图片及动画中选取图片巧妙组合,亲手制作一张令自己十二分满意的图画,充分体味绘画中的无穷乐趣。

当然如果朋友们更想锦上添花,还可通过扫描仪、数码相机把扫下来或拍下来的照片融入到自己的作品中,并保存和打印,这样就可以在亲朋好友面前好好展示 一下自己的绘画天分。

此外,为了更加让孩子们的绘画学习变得轻松易懂,金山画王2004不仅新增强其原有的动画演示功能,而且还增加了一项绘画过程录制功能。

朋友们可在使用此软件之前,打开其中的绘画演示程序,简明动画录制的DEMO会对软件中的画笔、倒色、仙女袋、文字 、滤镜、变形等主要功能进行了简单清晰的演示和讲解,只需10分钟你就掌握8项主要功能,即刻上手轻松绘画。

这项新增加的 “绘画过程录制功能”,主要是针对家长或是绘画老师们的教学工作。

这项功能进行“记录管理”,可以把您整个绘画过程给录制下来,并能反复播放,方便教学和演示,有助于小朋友们一步一步学习画画。

金山画王一经推出就一直受到所有喜爱绘画的朋友尤其是少年儿童们的喜爱,被誉为“神笔马良的绘画软件”。

目前金山画王已畅销德国、法国、美国等7个国家,被所有热爱绘画的人们所推崇。

此次历经两年才推出新品---金山画王2004,可谓是金山献给全世界少年儿童的一份迟来的祝福。

相信小朋友们收到长辈们送给自己的这份节日礼物时,一打这款全新的绘画软件,置身于金山画王2004新颖明亮的界面与轻松愉悦的背景音乐中的时候,他一定会绽开花朵般幸福的笑脸。

下载页面:

自己用Java编写了一个软件,能生成特定格式的文件;当双击文件...

当双击文件时,软件能打开,但是却不显示文件的参数内容,只有在软件中重新点击打开文件,才能显示文件内容从你的描述来看,应该是在双击加载参数内容后没有刷新所致可以尝试调试读取文件时打印文件内容,确定双击时是否正确读取了文件内容,然后再考虑刷新问题

用JAVA写的软件,如何去访问一个网站

验证码 我不会提取不好意思~package untitled1; import .*; import .*; import java.util.*; public class Untitled5 { /** * @param args */ public static void main(String[] args) throws Exception { // TODO 自动生成方法存根 URL url = new URL("http://localhost:8083/shopunion/alluserlogin");//你要登陆网站的登陆界面的地址. HttpURLConnection con = (HttpURLConnection) url.openConnection(); tDoOutput(true); // POST方式 tRequestMethod("POST"); OutputStream os = tOutputStream(); // 输出流,写数据 os.write("username=kaixinmoming&password=860523".getBytes());//提交用户名和密码.当然你要知道这个网站用户名和密码的变量名称向里面传值 BufferedReader reader = new BufferedReader(new InputStreamReader( tInputStream())); // 读取结果 String line; while ((line = adLine()) != null) { intln(line);//输出返回信息,这是一个字符传 你需要分析字符串来判断是否登陆成功. } } }