当前位置: 代码迷 >> Java相关 >> 功能实现不了
  详细解决方案

功能实现不了

热度:202   发布时间:2006-11-28 17:27:43.0
功能实现不了

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);
}
}
本程序是要实现一个画矩形功能的,怎么实现不了啊

搜索更多相关的解决方案: super  public  import  

----------------解决方案--------------------------------------------------------
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);//
再设置一个更新操作试试,就是重新读取鼠标点中的坐标

你的方法和楼主所要的不同的..你的是直接生成矩形,他想要的是单独画线连接成矩形的
----------------解决方案--------------------------------------------------------
以下是引用unicorn在2006-11-28 19:18:41的发言:
他肯定知道 drawRect()的
但他的想法是用线画矩形的
首先获得当前鼠标按下的点 然后连接第二次按下点 在连接第三次....

对,这只是先前测试了一下,后来忘了改过来了


----------------解决方案--------------------------------------------------------

public void mousePressed(MouseEvent e)
{
x1=e.getX();
y1=e.getY();
// repaint();去掉就可以了。

}


----------------解决方案--------------------------------------------------------
我之前试过了,也不可以
----------------解决方案--------------------------------------------------------

咋看这个程序应该没什么问题的
前些天用MFC做个画矩形的程序时候,也是这么获得鼠标坐标然后连线(VC++里的方法是Lineto())的

你可以先试着用Canvas类实现一下


----------------解决方案--------------------------------------------------------
是啊,千里版主怎么不在啊,快来救救我吧
----------------解决方案--------------------------------------------------------
  相关解决方案