import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class J_Draw extends JFrame
{
int x1=0,x2=0,y1=0,y2=0;
int width=0,height=0;
public J_Draw()
{
super("Example of mouse event handling");
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
x1=e.getX();
y1=e.getY();
repaint();
}
}
);
addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseReleased(MouseEvent e)
{
x2=e.getX();
y2=e.getY();
width=x2-x1;
height=y2-y1;
repaint();
}
});
setSize(400,400);
setVisible(true);
}
public void paint(Graphics g)
{
g.drawLine(x1,y1,width,height);
}
public static void main(String args[])
{
JFrame app=new J_Draw();
Container cp=app.getContentPane();
app.setBackground(Color.white);
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
本程序是要实现一个画矩形功能的,怎么实现不了啊
----------------解决方案--------------------------------------------------------
g.drawLine(x1,y1,width,height);
这是什么 方法,这是画线的方法
画矩形是这个方法么?
----------------解决方案--------------------------------------------------------
他肯定知道 drawRect()的
但他的想法是用线画矩形的
首先获得当前鼠标按下的点 然后连接第二次按下点 在连接第三次....
----------------解决方案--------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class J_Draw extends JFrame
{
int x1=0,x2=0,y1=0,y2=0;
int width=0,height=0;
public J_Draw()
{
super("Example of mouse event handling");
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
x1=e.getX();
y1=e.getY();
repaint();
}
public void mouseReleased(MouseEvent e)
{
x2=e.getX();
y2=e.getY();
width=x2-x1;
height=y2-y1;
repaint();
}}
);
setSize(400,400);
setVisible(true);
}
public void paint(Graphics g)
{
g.setColor(Color.blue);
g.drawRect(x1,y1,width,height);
}
public static void main(String args[])
{
JFrame app=new J_Draw();
Container cp=app.getContentPane();
app.setBackground(Color.white);
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
似乎还有点毛病,就是在刚刚画过一个矩形之后,鼠标在安下,会再画一个和上次一模一样的矩形!
能否给改一下哦!
----------------解决方案--------------------------------------------------------
g.drawRect(x1,y1,width,height);//
再设置一个更新操作试试,就是重新读取鼠标点中的坐标
你的方法和楼主所要的不同的..你的是直接生成矩形,他想要的是单独画线连接成矩形的
----------------解决方案--------------------------------------------------------
他肯定知道 drawRect()的
但他的想法是用线画矩形的
首先获得当前鼠标按下的点 然后连接第二次按下点 在连接第三次....
对,这只是先前测试了一下,后来忘了改过来了
----------------解决方案--------------------------------------------------------
public void mousePressed(MouseEvent e)
{
x1=e.getX();
y1=e.getY();
// repaint();去掉就可以了。
}
----------------解决方案--------------------------------------------------------
我之前试过了,也不可以
----------------解决方案--------------------------------------------------------
咋看这个程序应该没什么问题的
前些天用MFC做个画矩形的程序时候,也是这么获得鼠标坐标然后连线(VC++里的方法是Lineto())的
你可以先试着用Canvas类实现一下
----------------解决方案--------------------------------------------------------
是啊,千里版主怎么不在啊,快来救救我吧
----------------解决方案--------------------------------------------------------