当前位置:  技术问答>java相关

如何实现可拖放移动、并改变大小(200分)

    来源: 互联网  发布时间:2015-04-15

    本文导语:  请问如何使用Java2D API实现可用鼠标拖动位置,并通过控制点改变大小的方框、菱形、椭圆形等。本人有一简单程序,单在运行时不太正常。请指教: import java.awt.*; import java.util.*; import java.awt.event.*; import java.awt.ge...

请问如何使用Java2D API实现可用鼠标拖动位置,并通过控制点改变大小的方框、菱形、椭圆形等。本人有一简单程序,单在运行时不太正常。请指教:

import java.awt.*;
import java.util.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;

public class ShapeTest
{
public static void main(String[] args)
{
JFrame frame = new ShapeTestFrame();
frame.show();
}
}

class ShapeTestFrame extends JFrame
implements ActionListener
{
private ShapePanel panel;
private JComboBox comboBox;

public ShapeTestFrame()
{
setTitle("ShapeTest");
setSize(300, 300);
addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
Container contentPane = getContentPane();

panel = new ShapePanel();
comboBox = new JComboBox();
comboBox.addItem(new ArcMaker());
comboBox.addItem(new LineMaker());
comboBox.addItem(new RectangleMaker());
comboBox.addItem(new RoundRectangleMaker());
comboBox.addItem(new EllipseMaker());
comboBox.addItem(new PolygonMaker());
comboBox.addItem(new QuadCurveMaker());
comboBox.addItem(new CubicCurveMaker());
comboBox.addActionListener(this);
contentPane.add(comboBox, "North");
contentPane.add(panel, "Center");
}

public void actionPerformed(ActionEvent event)
{
ShapeMaker shapeMaker = (ShapeMaker)comboBox.getSelectedItem();
panel.setShapeMaker(shapeMaker);
}
}

class ShapePanel extends JPanel
implements MouseListener, MouseMotionListener
{
private Point2D[] points;
private static Random generator = new Random();
private static int SIZE = 6;
private int current;
private ShapeMaker shapeMaker;

public ShapePanel()
{
addMouseListener(this);
addMouseMotionListener(this);
current = -1;
}

public void setShapeMaker(ShapeMaker aShapeMaker)
{
shapeMaker = aShapeMaker;
int n = shapeMaker.getPointCount();
points = new Point2D[n];

for(int i=0; i

    
 
 

您可能感兴趣的文章:

  • C#格式化文件大小的实现代码
  • C# char类型字符转换大小写的实现代码
  • 用css来控制图片大小显示的实现方法与代码
  • oracle增加表空间大小两种实现方法
  • 如何编程实现SCO控制终端打印的字体大小或间距等?
  • 怎样让用户不能改变窗口的大小?(用JFrame实现的窗口)在线等待??
  • linux下C语言如何实现获得文件夹的大小?
  • 怎样实现画图程序中用鼠标牵着边线改变大小的功能
  • 关于用PF_PACKET实现抓包程序的一个问题,BUF的大小
  • php实现批量压缩图片文件大小的脚本
  • JAVA中怎样实现字符串的大小写转换?(完整程序)各位大虾帮帮我?
  • jQuery字体大小切换的实现代码
  • jquery更换文章内容与改变字体大小的实现代码
  • C#递归实现显示文件夹及所有文件并计算其大小的方法
  • 求救:如何制作象VB工具栏一样,实现按钮或其他控件的动态拖放添加到当前容器,而且还能拖动和改变大小!
  • jquery实现不同大小浏览器使用不同的css样式表的方法
  • 请问如何实现人民币的大小写问题
  • fopen打开的文件,如何实现当文件达到一定大小后,重头进行覆盖写入
  • 判断机器大小端的两种实现方法
  • java实现人民币大小写转换方法分享
  • 用shell命令来实现改变文件的icon
  • 如何编程实现改变显示器的分辩率?
  • jquery 选择块与改变属性值的实现方法
  • 如何实现用通迅改变Linux的IP地址?
  • javascript里面如何实现下拉框的值改变时表单立即提交?急
  • 用C语言怎么实现改变当前路径(请看下面代码)
  • 请教:如何实现在不改变原有系统的前提下,安装linux
  • Python实现partial改变方法默认参数
  • Android按钮按下的时候改变颜色实现方法
  • 纯CSS实现鼠标放上去改变文字内容
  • C#实现改变DataGrid某一行和单元格颜色的方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • android实现关闭或开启移动网络数据
  • debian系统实现自动挂载移动硬盘,需要安装那些软件
  • 请教:如何实现点击一个image后,该image在Applet中移动位置?有示例代码吗?谢谢!!!
  • 如何实现前一日,后一日的移动?
  • C#实现随鼠标移动窗体实例
  • 请教:如何实现点击一个image后,该image在Applet中移动位置?有示例代码吗?谢谢!!
  • C# 无边框窗体之窗体移动实现代码
  • Android 判断SIM卡属于哪个移动运营商的实现代码
  • 将数组中指定数量的元素移动数组后面的实现代码
  • Jquery实现Div上下移动示例
  • 如何实现一固定长度的直线在面板上的移动?
  • Java实现鼠标拖拽移动界面组件
  • jquery animate实现DIV变化或左右移动
  • JQuery实现鼠标移动到图片上显示边框效果
  • jQuery拖动div、移动div、弹出层实现原理及示例
  • C#实现文件复制、移动与创建的实例代码
  • jquery实现tr元素的上下移动示例代码
  • jquery实现鼠标移动时出现特效的代码
  • jquery实现隔行变色、鼠标移动变色的小插件
  • Qt实现图片移动实例(图文教程)
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3