会swing的进来帮帮忙吧 想做个windows自带的画图那样的程序,请问如何做一个按钮,点击它之后通过拖动鼠标就可以画出一个圆形或者矩形来?由于刚开始学swing,所以连API都不知道该查哪个类,请有经验的提示一下吧。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我记得在一本书上有,今天刚看,忘记了。java.awt Graphics 是画图形的 看java.awt 下的吧。。窗体啊,jframe,jtable,都忘了,你看一下 鼠标事件加 Graphics 貌似可以搞定 以前 写过的一个 gui 你看一下: 要导入import javax.swing.*;import java.awt.*;import java.awt.event.*; JButton b2 = new JButton("确定"); b2.addMouseListener(new LandListener()); private class LandListener extends MouseAdapter{ public void mousePressed(MouseEvent e) { // TODO 你要的实现。。 } } 给你部分代码,你看一下就知道怎么写了。。 第一肯定要想到鼠标事件;第二那还不就是要获得到鼠标的位置;第三找到话题对象那个方法是画圆或是画长方形的;你根据这个思路你去参看api看一下了!希望能对于你有帮助! 要继承paintComponent()这个方法,然后实现MouseListener这个接口,处理完一个事件时注意repaint() //只贴了响应mouse的代码,主要是响应mouseDraged消息,在拖动时不断绘画,刷新,鼠标释放时//响应release消息,把最后一个绘制的图形保存进绘图链表中,调用repaint刷新.//这样的话会有类似橡皮筋的效果..//代码中的graphicsItem是自定义的保存所绘图形信息的类//如果lz不要求保存画的图形,那就是在mouseDraged()中刷新,绘图,mouseRelease中把再绘制一次就形public void paintComponent(Graphics g){ super.paintComponent(g);// 必须调用才能有背景色 Graphics2D g2D = (Graphics2D) g; for (graphicsItem e : paintList) { e.drawMyself(g2D); }} addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) { if (!SwingUtilities.isRightMouseButton(e)) { EndX = e.getX(); EndY = e.getY(); //所绘图形保存入ArrayList paintList paintList.add(new graphicsItem(OriX, OriY,EndX, EndY, drawMode, lineColor,fillColor)); repaint(); } } }); addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { if (!SwingUtilities.isRightMouseButton(e)) { update(getGraphics());//刷新 Graphics2D g2 = (Graphics2D) getGraphics(); g2.setColor(lineColor); switch (drawMode) { case MODE_LINE: g2.draw(new Line2D.Double(OriX, OriY, e.getX(), e.getY())); break; case MODE_RECTANGLE: g2.draw(new Rectangle2D.Double(OriX, OriY, e.getX() - OriX,e.getY() - OriY)); g2.setColor(fillColor); g2.fillRect(OriX + 1, OriY + 1, e.getX() - 1- OriX, e.getY() - 1 - OriY); break; case MODE_ELLIPSE: g2.draw(new Ellipse2D.Double(OriX, OriY, e.getX() - OriX, e.getY() - OriY)); g2.setColor(fillColor); g2.fillArc(OriX, OriY,e.getX() - OriX, e.getY() - OriY, 0, 360); break; default: break; } } } }); Java API文档里面查swing吧,里面应该有的,像什么Graphics,awt什么的。几年没做了,都忘了· Graphics 类里有个paint方法。可以达到你需要的哈。里面有方法画圆矩形等。慢慢琢磨吧~! jdbc连接出问题了,实在是不知道咋搞了 java中"abc"=="abc"结果是false Spring与Hibernate整合,session不关闭问题 一个关于https页面定向到http页面的问题 Unable to load class for JSP 求救 请教个 Struts 2.0 下载的问题 各位高手,问一个问题,在url里的变量值里如果有空值,是不是会出错呀,要怎样解决呀,小弟在这里24等着你们指导 问一个rmi的问题 在struts的标签中,如何让表单的某个字段值不能修改?? applet怎么取到系统时间 struts2的问题 往sqlserv2000中插入数据是出现空指针怎么回事?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*; JButton b2 = new JButton("确定");
b2.addMouseListener(new LandListener()); private class LandListener extends MouseAdapter{ public void mousePressed(MouseEvent e) {
// TODO 你要的实现。。
}
}
给你部分代码,你看一下就知道怎么写了。。
//只贴了响应mouse的代码,主要是响应mouseDraged消息,在拖动时不断绘画,刷新,鼠标释放时
//响应release消息,把最后一个绘制的图形保存进绘图链表中,调用repaint刷新.
//这样的话会有类似橡皮筋的效果..
//代码中的graphicsItem是自定义的保存所绘图形信息的类//如果lz不要求保存画的图形,那就是在mouseDraged()中刷新,绘图,mouseRelease中把再绘制一次就形
public void paintComponent(Graphics g)
{
super.paintComponent(g);// 必须调用才能有背景色
Graphics2D g2D = (Graphics2D) g; for (graphicsItem e : paintList)
{
e.drawMyself(g2D);
}}
addMouseListener(new MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
if (!SwingUtilities.isRightMouseButton(e))
{
EndX = e.getX();
EndY = e.getY();
//所绘图形保存入ArrayList paintList
paintList.add(new graphicsItem(OriX, OriY,EndX, EndY, drawMode, lineColor,fillColor));
repaint();
}
}
});
addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseDragged(MouseEvent e)
{
if (!SwingUtilities.isRightMouseButton(e))
{
update(getGraphics());//刷新
Graphics2D g2 = (Graphics2D) getGraphics();
g2.setColor(lineColor);
switch (drawMode)
{
case MODE_LINE:
g2.draw(new Line2D.Double(OriX, OriY, e.getX(), e.getY()));
break;
case MODE_RECTANGLE:
g2.draw(new Rectangle2D.Double(OriX, OriY, e.getX() - OriX,e.getY() - OriY));
g2.setColor(fillColor);
g2.fillRect(OriX + 1, OriY + 1, e.getX() - 1- OriX, e.getY() - 1 - OriY);
break;
case MODE_ELLIPSE:
g2.draw(new Ellipse2D.Double(OriX, OriY, e.getX() - OriX, e.getY() - OriY));
g2.setColor(fillColor);
g2.fillArc(OriX, OriY,e.getX() - OriX, e.getY() - OriY, 0, 360);
break;
default:
break;
}
}
}
});
几年没做了,都忘了·