Line.java文件-------驱动类
import javax.swing.JFrame;
public class Line
{
public static void main(String[] arg)
{
JFrame frame=new JFrame("Draw lines");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Linepanel pane=new Linepanel();
frame.getContentPane().add(pane);
frame.pack();
frame.setVisible(true);
}
}
Linepanel.java文件
import java.util.ArrayList;
import javax.swing.*;
import java.awt.*;
import java.awt.Point;
import java.awt.event.*;
public class Linepanel extends JPanel
{
private Point point1=null,point2=null;
private ArrayList<Point> pointlist;
public Linepanel()
{
pointlist=new ArrayList<Point>();
Linelistener listener=new Linelistener();
addMouseListener(listener);
addMouseMotionListener(listener);
setBackground(Color.black);
setPreferredSize(new Dimension(400,200));
}
public void paintComponent(Graphics page)
{
super.paintComponent(page);
page.setColor(Color.yellow);
if(pointlist.size()>=2)
{
for(int i=1;i<pointlist.size();i++)
{
page.drawLine(pointlist.get(i-1).x,pointlist.get(i-1).y,pointlist.get(i).x,pointlist.get(i).y);
point1=pointlist.get(i);
}
}
if(point1!=null && point2!=null)
{
page.drawLine(point1.x,point1.y,point2.x,point2.y);
}
}
private class Linelistener implements MouseListener,MouseMotionListener
{
public void mousePressed(MouseEvent event)
{
point1=event.getPoint();
pointlist.add(point1);
}
public void mouseDragged(MouseEvent event){}
public void mouseClicked(MouseEvent event){}
public void mouseReleased(MouseEvent event){}
public void mouseEntered(MouseEvent event){}
public void mouseExited(MouseEvent event){}
public void mouseMoved(MouseEvent event){
point2=event.getPoint();
repaint();
}
}
}