/*

*只画直线,矩形,椭圆,只能向右下角画

*

*PainterPanel extends JPanel implements MouseListener

*addMouseListener(this);

*

*JToggleButton

*

*hxz*/

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

class PainterPanel extends JPanel implements MouseListener{

int shape=-1; //图案类型

Point[] point=new Point[2]; //记录鼠标拖动的起始点和终点

public PainterPanel(){

super(); //调用父类构造函数

this.setBackground(Color.white); //设置背景颜色

point[0]=new Point(-1,-1); //初始化变量

point[1]=new Point(-1,-1);

addMouseListener(this); //增加鼠标事件

}

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

point[1]=new Point(e.getX(),e.getY()); //设置终点位置

repaint(); //重绘屏幕

}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseClicked(MouseEvent e){}

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

point[0]=new Point(e.getX(),e.getY()); //设置起始点位置

}

public void paint(Graphics g){

super.paint(g);

switch (shape){ //根据shape值绘制图形

case 0:

g.drawLine(point[0].x,point[0].y,point[1].x,point[1].y); //绘线

break;

case 1:

int width=point[1].x-point[0].x;

int height=point[1].y-point[0].y;

g.drawOval(point[0].x,point[0].y,width,height); //绘椭圆

break;

case 2:

width=point[1].x-point[0].x;

height=point[1].y-point[0].y;

g.drawRect(point[0].x,point[0].y,width,height); //绘矩形

break;

}

}

public void drawShape(int shape){

this.shape=shape;

}

}

/*

*JToggleButton

*

*JToolBar

*

*hxz*/

public class PainterDemo extends JFrame{

JToggleButton[] button=new JToggleButton[3]; //按钮组

PainterPanel painter=new PainterPanel(); //绘图面板

public PainterDemo(){

super("Java画图程序"); //调用父类构造函数

String[] buttonName={"直线","椭圆","矩形"}; //按钮文字

DrawShapeListener buttonListener=new DrawShapeListener(); //按钮事件

JToolBar toolBar=new JToolBar(); //实例化工具栏

ButtonGroup buttonGroup=new ButtonGroup(); //实例化按钮组

for (int i=0;i

button[i]=new JToggleButton(buttonName[i]); //实例化按钮

button[i].addActionListener(buttonListener); //增加按钮事件处理

buttonGroup.add(button[i]); //增加按钮到按钮组

toolBar.add(button[i]); //增加按钮到工具栏

}

Container container=getContentPane(); //得到窗口容器

container.add(toolBar,BorderLayout.NORTH); //增加组件到容器上

container.add(painter,BorderLayout.CENTER);

setSize(300,200); //设置窗口尺寸

setVisible(true); //设置窗口为可视

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序

}

//内部类

class DrawShapeListener implements ActionListener{ //按钮事件处理

public void actionPerformed(ActionEvent e){

for (int i=0;i

if (e.getSource()==button[i]){ //判断来自于哪个按钮

painter.drawShape(i); //绘制图形

}

}

}

}

public static void main(String[] args){

new PainterDemo();

}

}

java画出斜椭圆_【转】画图java源代码,只画直线,矩形,椭圆相关推荐

  1. java 删除已画出的线_如何删除java中的绘制线?

    问题是如何删除旧行?我的意思是,只在屏幕上显示当前的x和y行,使两行之间的交点"跟随"鼠标指针. 这是更新的代码: import javax.swing.*; import jav ...

  2. java椭圆_如何用java画椭圆

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 利用java画出椭圆.也就是鼠标一边移动一边显示出椭圆,如何做到请大神指教 这是我写的(没有达到我自己的要求): import java.awt.*; i ...

  3. 怎样快速画出一个正方体_小学数学非常有效的“画图”解题法,快速解题的“金钥匙”...

    小学阶段的数学主要培养的是孩子的逻辑思维能力,是从形象思维逐步过度到抽象思维的过程,如果在小学阶段没有将基础打牢,那么等孩子上初中后面对更复杂的学习内容,就会变得更吃力. 在小学数学中,"画 ...

  4. 根据文法画出语法树_更多确定子句语法

    本章有两个主要目标: 1.研究DCG表示法提供的两个重要功能:额外的参数和额外的 目标. 2.讨论DCGs的现状和局限性. 1  额外参数 在上一章中,我们介绍了基本的DCG表示法.但是DCG所提供的 ...

  5. python根据频率画出词云_利用pandas+python制作100G亚马逊用户评论数据词云

    原标题:利用pandas+python制作100G亚马逊用户评论数据词云 数据挖掘入门与实战 公众号: datadw 我们手里面有一个差不多100G的亚马逊用户在购买商品后留下的评论数据(数据格式为j ...

  6. java画太极加图片_新手初学java 尝试编程绘画太极图

    我是个新手,对java理解还不深入,看了些java方面的基础视频,自己尝试着把中国的古老的太极图给画出来,经过一些思考和动手,终于把太极图给绘画出来. 记得以前某位高手也画过类似的太极图,不过当时自己 ...

  7. java中画房子的程序_房子用java绘图(控制台)

    我必须制作一个程序,要求用户输入高度和长度(均为偶数),然后程序将绘制一个房子.房子的屋顶是(宽度/ 2)行数.示例程序应如下所示: Enter height and width of the hou ...

  8. opengl如何画出一个球_少儿美术绘画教程:毛线球

    小朋友们,你们平时画画有没有遇到过没有灵感的时候,面对画纸却不知道画些什么呢?今天我们来介绍一种创意思维,叫发散性思维.以一个毛线球为出发点.通过毛线球,我们可以想到圆球,通过圆球我们可以想到圆形. ...

  9. 怎样快速画出一个正方体_素描教程:新手如何快速学会正方体

    新手怎么画素描正方体? 系统学素描,一般情况下老师都会让你画一下正方体.那么对于我们新手来说,画正方体不难,难就在它的透视结构不好把握.下面我们来学习新手怎么画素描正方体. 结构素描画法 画石膏像正方 ...

最新文章

  1. Windows客户端C/C++编程规范“建议”——函数调用
  2. 平均数、中位数和众数及它们之间的关系
  3. Select下拉列表框(添加、删除option)
  4. 计算机科学与技术 单片机,单片机-兰州交通大学计算机科学与技术实验教学中心...
  5. java的部署目录在哪里_Java:Tomcat的部署实例之资源目录
  6. 垃圾收集算法,垃圾收集器_弱,弱,最弱,利用专家参考来管理垃圾收集器
  7. 浓浓的亲情 2008-10-6 8:53:00 (21ic)
  8. 支付宝第三方应用代调用API关系说明
  9. 要重复多少次变成潜意识_潜意识成功法则
  10. 电脑键盘为什么无法输入
  11. 【Fragment】FragmentManager和FragmentTransaction使用
  12. 小蓝本 第一本 《因式分解技巧》 第七章 综合运用 笔记 (第七天)
  13. 使用腾讯云服务器搭建离线(中转)网盘
  14. “狙击”特斯拉:电动汽车后起之秀的最后一战
  15. Win7下实现磁盘软Raid1
  16. 天涯明月刀7月4号服务器维护,7月24日服务器例行维护公告(已完成)
  17. 设计师怎么优雅的薅羊毛——技能get!!
  18. 另一种存在,入土为安,
  19. 惠普HP Deskjet F378 多功能一体机驱动
  20. “造物者”是一群程序员,程序员将是未来世界的“造物者”

热门文章

  1. 《attention is all you need》解读
  2. MindSpore 高阶优化器
  3. TVM设计与构架构建
  4. 计算机视觉系列最新论文(附简介)
  5. 2021年大数据HBase(十六):HBase的协处理器(Coprocessor)
  6. php连接mysql页面空白_求大神: php注册页面跳转出现空白页
  7. AtomicBoolean 的使用与介绍
  8. Eclipse工具栏上android的机器人小图标和adt图片的显示
  9. SharePoint2010 -- 管理配置文件同步
  10. 父类引用指向子类对象