| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2140 人关注过本帖
标题:用drawRect()画出矩形,如何实现脱拽功能
只看楼主 加入收藏
qsrock
Rank: 1
等 级:新手上路
帖 子:255
专家分:0
注 册:2005-12-29
收藏
 问题点数:0 回复次数:9 
用drawRect()画出矩形,如何实现脱拽功能
本来不想问,但是做了一个多小时都搞不出来,找相关的帖又找不到,只好麻烦下大家了!~
import java.awt.*;
import java.awt.event.*;
public class DrawRect extends Frame
{
private int x,y,width,higth;
public DrawRect(){
setTitle("画图");
setBackground(Color.WHITE);
setSize(400,400);
setVisible(true);
addMouseListener(new
MouseAdapter(){
public void mousePressed(MouseEvent e){
x=e.getX();
y=e.getY();
}
public void mouseReleased(MouseEvent e){
width=e.getX();
higth=e.getY();
}
});
addWindowListener(new
WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void paint(Graphics g){
g.drawRect(x,y,width-x,higth-y);//为什么我这里不可以画出矩形哦??
//g.drawRect(50,50,120,230);
}
public static void main(String[] args)
{
new DrawRect();
}
}
为什么我这样写画不了,更不用说实现脱拽功能 了
还要写些什么函数吗!~那位可以帮我补全下!~
谢谢先!~
搜索更多相关主题的帖子: drawRect 矩形 
2007-03-06 22:57
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
怎么能这样画呢

可惜不是你,陪我到最后
2007-03-06 23:01
ILoveMK
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:487
专家分:0
注 册:2007-2-12
收藏
得分:0 
import java.awt.*;
import java.awt.event.*;
class DrawRect extends Frame
{
private int x,y,width,higth;
public DrawRect(){
setTitle("画图");
setBackground(Color.WHITE);
setSize(400,400);
setVisible(true);
addMouseListener(new
MouseAdapter(){
public void mousePressed(MouseEvent e){
x=e.getX();
y=e.getY();
}
public void mouseReleased(MouseEvent e){
width=e.getX();
higth=e.getY();
repaint();
}
});
addWindowListener(new
WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void paint(Graphics g){
g.drawRect(x,y,width-x,higth-y);//为什么我这里不可以画出矩形哦??
//g.drawRect(50,50,120,230);
}
public static void main(String[] args)
{
new DrawRect();
}
}
这样就行了。

天下归心
2007-03-06 23:03
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你应该在mouseReleased里面调用一下repaint()

这样才能在每次释放鼠标的时候重绘一下

还有,不要再用AWT里面的组件了,最好是用SWING里面的,并且重写里面的paintComponent方法,而不是paint方法

因为SWING的性能更高

可惜不是你,陪我到最后
2007-03-06 23:03
qsrock
Rank: 1
等 级:新手上路
帖 子:255
专家分:0
注 册:2005-12-29
收藏
得分:0 
谢谢两位!~
不过新的问题又来了 !~
现在我用swing改过来但是却画不了矩形了!~
还有我想画出脱拽的图象,但是不知道怎么写~!~郁闷啊!~
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DrawRect2 extends JFrame
{
private int startX,startY,endX,endY;
public DrawRect2(){
setTitle("画图");
setBackground(Color.WHITE);
setSize(400,400);
setVisible(true);
addMouseListener(new
MouseAdapter(){
public void mousePressed(MouseEvent e){
startX=e.getX();
startY=e.getY();
}
public void mouseReleased(MouseEvent e){
endX=e.getX();
endY=e.getY();
repaint()
}
});
addMouseMotionListener(new //我想在这里画出脱拽的图象,但是不知道怎么写~~我想应该用多条if-else语句写
MouseMotionAdapter(){
public void mouseDragged(MouseEvent e) {
System.out.println("拖动");

}
public void mouseMoved(MouseEvent e){}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paintComponent(Graphics g){
// super.paintComponent();
g.drawLine(startX,startY,endX,startY);
g.drawLine(startX,endY,endX,endY);
g.drawLine(startX,startY,startX,endY);
g.drawLine(endX,startY,endX,endY);
g.drawRect(startX,startY,Math.abs(endX-startX),Math.abs(endY-startY));
//g.drawRect(50,50,120,230);
}
public static void main(String[] args)
{
new DrawRect2();
}
}

2007-03-07 10:50
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你可以实现mouseDragged方法,实现边拖的时候边画

可惜不是你,陪我到最后
2007-03-07 10:53
qsrock
Rank: 1
等 级:新手上路
帖 子:255
专家分:0
注 册:2005-12-29
收藏
得分:0 
现在有个问题是连矩形也画不了!~
把swing的paintComponent改为awt的piant方法就没问题了!~
为什么会这样的??
2007-03-07 11:04
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 
楼主看看这个帖子里面我写的代码吧:http://bbs.bc-cn.net/viewthread.php?tid=122151

My BlogClick Me
2007-03-07 11:05
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
呵呵,JFrame仍然是重量级组件,你得在JPanel上画,然后把JPanel加入到JFrame中去

你写一个类继承自JPanel的,就OK了

可惜不是你,陪我到最后
2007-03-07 11:06
qsrock
Rank: 1
等 级:新手上路
帖 子:255
专家分:0
注 册:2005-12-29
收藏
得分:0 
好 的~!~多谢了!~~
2007-03-07 11:13
快速回复:用drawRect()画出矩形,如何实现脱拽功能
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026995 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved