>>>>>>>>>>急!!!!!!!!1一道关于画折线的作业题 也就是说我想做成window下面的那个画图小工具里面的画折线(用鼠标拉的) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的程序我调了一下,没问题了import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class Drawpollygon extends JFrame{ private Pollygon ply; public Drawpollygon() { ply = new Pollygon(); ply.setBackground(Color.white); getContentPane().add(ply,BorderLayout.CENTER); setSize(300,300); show(); } public static void main(String args[]) { Drawpollygon dp = new Drawpollygon(); dp.addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0); } } ); }}/** @用来贮存画过的折线的类*/class XY{ private final Vector v = new Vector(); private Point point ; private Integer value=null; private int[] x,y; public void add(Point p) { point = p; v.add(point); } public int[] getX()//返回一个所要画的折线的x轴的数组 { x= new int[v.size()]; for(int i=0;i<v.size();i++) { point = (Point)v.elementAt(i); x[i] = (int)Math.round(point.getX()); } return x; } public int[] getY()//返回一个所要画的折线的y轴的数组 { y = new int[v.size()]; for (int i= 0;i<v.size();i++) { point = (Point)v.elementAt(i); y[i] = (int)Math.round(point.getY()); } return y; } public int length()//返回所画的折线的点数 { return v.size(); }}class Pollygon extends JPanel{ private XY xy ; private Point pXY; public Pollygon() { setSize(new Dimension(150,100)); setVisible(true); xy = new XY(); pXY=null; addMouseListener( new MouseAdapter(){ public void mousePressed( MouseEvent e) { if(pXY ==null) { pXY =new Point(); pXY.x = e.getX(); pXY.y = e.getY(); xy.add(pXY); pXY=null; } } public void mouseReleased(MouseEvent e) { if(pXY ==null) { pXY =new Point(); pXY.y= e.getY(); pXY.x=e.getX(); xy.add(pXY); pXY = null; } //repaint(); } } ); addMouseMotionListener( new MouseMotionAdapter(){ public void mouseDragged(MouseEvent e) { if(pXY ==null) { pXY =new Point(); pXY.y= e.getY(); pXY.x=e.getX(); xy.add(pXY); pXY = null; } repaint(); } } ); } public void paintComponent(Graphics g) { super.paintComponent(g); g.drawPolygon(xy.getX(),xy.getY(),xy.length()); }} wanglh2000 在吗.能帮我再看这道题吗? 不知你要的是不是仅是画折线,还是画多边形。不过给出我的实现。环境:win2k+sp3+jdk1.4.1/*** PolyLine.java* Draw polyline using mouse in window**@author sam(yeahspyme)*@version 1.0 May 20,2003**/package app;import java.awt.*;import java.awt.event.*;class polyline extends Frame implements MouseListener{ Point line[]; //boolean drawing=false; int count=0; polyline() { super(); line=new Point[50]; addMouseListener(this); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public void mouseClicked(MouseEvent e) { line[count++]=e.getPoint(); if(count!=1) repaint(); } public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void paint(Graphics g) { for(int i=1;i<count;i++) { g.drawLine((int)line[i-1].getX(),(int)line[i-1].getY(), (int)line[i].getX(),(int)line[i].getY()); } } public static void main(String []args) { polyline f=new polyline(); f.setSize(400,300); f.show(); }} 谢谢楼上的!就是你的这种效果了.但你只是可以clicked来画折线.如果是又可以用dragged也可以用clicked又怎么实现呢???解决了立刻结帐!! java.awt.event.MouseMotionListener 好了,我改好了,现在唯一的缺点就是不能画多条折线。调试环境:win2k+sp3+jdk1.4.1/*** PolyLine.java* Draw polyline using mouse in window* Usage:* Click the left mouse button to draw,and double-click the left mouse* button to end.**@author sam(yeahspyme)*@version 1.1 May 21,2003**/package app;import java.awt.*;import java.awt.event.*;class polyline extends Frame implements MouseListener,MouseMotionListener{ Point line[]; Point now; boolean drawing=false; int count=0; polyline() { super(); line=new Point[50]; addMouseListener(this); addMouseMotionListener(this); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public void mouseClicked(MouseEvent e) { line[count++]=e.getPoint(); if(count!=1) repaint(); drawing=true; if(e.getClickCount()==2) drawing=false; } public void mouseMoved(MouseEvent e) { if(drawing) { now=e.getPoint(); if(count!=0) repaint(); } } public void mouseDragged(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void paint(Graphics g) { int i; for(i=1;i<count;i++) { g.drawLine((int)line[i-1].getX(),(int)line[i-1].getY(), (int)line[i].getX(),(int)line[i].getY()); } if(count!=0&&drawing) { g.drawLine((int)line[count-1].getX(),(int)line[count-1].getY(), (int)now.getX(),(int)now.getY()); } } public static void main(String []args) { polyline f=new polyline(); f.setSize(400,300); f.show(); }} 你好好看一下我的Usage!闪,那是必然的,这种实现方法无法避免可以停下(双击),只是无法画多条折线。 如何能打开jsp就直接执行action jdbc如何取得select count(*)的总和 session过期事件 哪位大侠指点一下,如何获取到GPS的经度和纬度值,附源码 有一个正则表达式,小弟是在是看不懂,求救。。。 求助!!! 急呀,请问JXL或者POI 生成的EXCEL怎么直接打印到打印机上。 文件我已经建立了,为什么总返回false?? 我没用过Java,请问各位大侠Java中除了/*...*/用作注释外,还有什么符号可用于注释符? Could SSL be used to SMTP??? java 中有没有相当于enum的定义 autoexec.bak菜问,
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;public class Drawpollygon extends JFrame{
private Pollygon ply;
public Drawpollygon()
{
ply = new Pollygon();
ply.setBackground(Color.white);
getContentPane().add(ply,BorderLayout.CENTER);
setSize(300,300);
show();
}
public static void main(String args[])
{
Drawpollygon dp = new Drawpollygon();
dp.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}
}
/**
@用来贮存画过的折线的类
*/
class XY{
private final Vector v = new Vector();
private Point point ;
private Integer value=null;
private int[] x,y;
public void add(Point p)
{
point = p;
v.add(point);
}
public int[] getX()//返回一个所要画的折线的x轴的数组
{
x= new int[v.size()];
for(int i=0;i<v.size();i++)
{
point = (Point)v.elementAt(i);
x[i] = (int)Math.round(point.getX());
}
return x;
}
public int[] getY()//返回一个所要画的折线的y轴的数组
{
y = new int[v.size()];
for (int i= 0;i<v.size();i++)
{
point = (Point)v.elementAt(i);
y[i] = (int)Math.round(point.getY());
}
return y;
}
public int length()//返回所画的折线的点数
{ return v.size(); }
}
class Pollygon extends JPanel{
private XY xy ;
private Point pXY;
public Pollygon()
{
setSize(new Dimension(150,100));
setVisible(true);
xy = new XY();
pXY=null;
addMouseListener(
new MouseAdapter(){
public void mousePressed( MouseEvent e)
{
if(pXY ==null)
{
pXY =new Point();
pXY.x = e.getX();
pXY.y = e.getY();
xy.add(pXY);
pXY=null;
}
}
public void mouseReleased(MouseEvent e)
{
if(pXY ==null)
{
pXY =new Point();
pXY.y= e.getY();
pXY.x=e.getX();
xy.add(pXY);
pXY = null;
}
//repaint();
}
}
);
addMouseMotionListener(
new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e)
{
if(pXY ==null)
{
pXY =new Point();
pXY.y= e.getY();
pXY.x=e.getX();
xy.add(pXY);
pXY = null;
}
repaint();
}
}
);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawPolygon(xy.getX(),xy.getY(),xy.length());
}
}
能帮我再看这道题吗?
不过给出我的实现。
环境:win2k+sp3+jdk1.4.1
/**
* PolyLine.java
* Draw polyline using mouse in window
*
*@author sam(yeahspyme)
*@version 1.0 May 20,2003
**/package app;
import java.awt.*;
import java.awt.event.*;class polyline extends Frame implements MouseListener
{
Point line[];
//boolean drawing=false;
int count=0;
polyline() {
super();
line=new Point[50];
addMouseListener(this);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void mouseClicked(MouseEvent e) {
line[count++]=e.getPoint();
if(count!=1) repaint();
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void paint(Graphics g) {
for(int i=1;i<count;i++) {
g.drawLine((int)line[i-1].getX(),(int)line[i-1].getY(),
(int)line[i].getX(),(int)line[i].getY());
}
}
public static void main(String []args) {
polyline f=new polyline();
f.setSize(400,300);
f.show();
}
}
就是你的这种效果了.
但你只是可以clicked来画折线.如果是又可以用dragged也可以用clicked
又怎么实现呢???
解决了立刻结帐!!
调试环境:win2k+sp3+jdk1.4.1/**
* PolyLine.java
* Draw polyline using mouse in window
* Usage:
* Click the left mouse button to draw,and double-click the left mouse
* button to end.
*
*@author sam(yeahspyme)
*@version 1.1 May 21,2003
**/package app;
import java.awt.*;
import java.awt.event.*;class polyline extends Frame implements MouseListener,MouseMotionListener
{
Point line[];
Point now;
boolean drawing=false;
int count=0;
polyline() {
super();
line=new Point[50];
addMouseListener(this);
addMouseMotionListener(this);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void mouseClicked(MouseEvent e) {
line[count++]=e.getPoint();
if(count!=1) repaint();
drawing=true;
if(e.getClickCount()==2) drawing=false;
}
public void mouseMoved(MouseEvent e) {
if(drawing) {
now=e.getPoint();
if(count!=0) repaint();
}
}
public void mouseDragged(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void paint(Graphics g) {
int i;
for(i=1;i<count;i++) {
g.drawLine((int)line[i-1].getX(),(int)line[i-1].getY(),
(int)line[i].getX(),(int)line[i].getY());
}
if(count!=0&&drawing) {
g.drawLine((int)line[count-1].getX(),(int)line[count-1].getY(),
(int)now.getX(),(int)now.getY());
}
}
public static void main(String []args) {
polyline f=new polyline();
f.setSize(400,300);
f.show();
}
}
闪,那是必然的,这种实现方法无法避免
可以停下(双击),只是无法画多条折线。