java吧 关注:1,285,788贴子:12,810,613
  • 1回复贴,共1

写了一个划线程序,写了一整天

只看楼主收藏回复


import java.awt.AWTEvent;import java.awt.BorderLayout;import java.awt.EventQueue;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Point;import java.awt.Rectangle;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.util.ArrayList;import java.util.Iterator;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.text.html.HTMLDocument;
public class Swing17 extends JFrame{ DrawPanel drawPanel=new DrawPanel(this); EventQueuePanel eventQueuePanel=new EventQueuePanel(this); public Swing17() { setTitle("DrawLine"); setBounds(200, 300, 600, 500); setVisible(true); addWindowListener(new WindowAdapter() {
@Override public void windowClosing(WindowEvent e) { System.exit(0); } }); setLayout(new BorderLayout()); add(eventQueuePanel,BorderLayout.NORTH); add(drawPanel,BorderLayout.CENTER); validate(); } public static void main(String[] args) { JFrame frame=new Swing17(); } } class DrawPanel extends JPanel implements MouseListener{ Swing17 swing17; boolean ListenerOn; public DrawPanel(Swing17 swing17){ this.swing17=swing17; } Point p; Point top=getLocation(); Graphics2D g; ArrayList<ArrayList<Point>> arrlistPA=new ArrayList<ArrayList<Point>>(); ArrayList<Point> arrlist=new ArrayList<>(); @Override public void paint(Graphics g) { super.paint(g); //To change body of generated methods, choose Tools | Templates. Point pointfrom = null; for (Iterator<ArrayList<Point>> it = arrlistPA.iterator(); it.hasNext();) { ArrayList<Point> arrayListinfor = it.next(); Iterator<Point> i=arrayListinfor.iterator(); if(i.hasNext()){ pointfrom = i.next(); g.drawOval(pointfrom.x-2, pointfrom.y-2, 4, 4); } while(i.hasNext()) { Point pointto=i.next(); g.drawOval(pointto.x-2, pointto.y-2, 4, 4); g.drawLine(pointfrom.x, pointfrom.y, pointto.x, pointto.y); pointfrom=pointto; } }
}
@Override public void mouseClicked(MouseEvent e) { arrlistPA.add(arrlist); g=(Graphics2D)getGraphics(); if(e.getButton()==MouseEvent.BUTTON1){ Point q=e.getPoint(); arrlist.add(q); g.drawOval(q.x-2, q.y-2, 4, 4); if(p!=null){ g.drawLine(p.x, p.y, q.x, q.y); } this.p=q; }else{ p=null; arrlist=new ArrayList<>(); } } @Override public void mousePressed(MouseEvent e) { }
@Override public void mouseEntered(MouseEvent e) { }
@Override public void mouseExited(MouseEvent e) { }
@Override public void mouseReleased(MouseEvent e) { }
} class EventQueuePanel extends JPanel implements ActionListener{ Swing17 swing17; JButton button1; JButton button2; public EventQueuePanel(Swing17 swing17) { this.swing17=swing17; button1=new JButton("Draw Line"); button2=new JButton("CleanAll"); add(button1); add(button2); button1.addActionListener(this); button2.addActionListener(this); }
@Override public void actionPerformed(ActionEvent e) { if(e.getSource()==button1){ swing17.drawPanel.addMouseListener(swing17.drawPanel); swing17.drawPanel.p=null; swing17.drawPanel.arrlistPA.add(swing17.drawPanel.arrlist); swing17.drawPanel.arrlist=new ArrayList<>(); System.out.println("drawpanel监听器已经载入您可以开始画线了"); }else if(e.getSource()==button2){ swing17.drawPanel.g.dispose(); swing17.drawPanel.p=null; swing17.drawPanel.arrlistPA=new ArrayList<ArrayList<Point>>(); swing17.drawPanel.arrlist=new ArrayList<>(); swing17.drawPanel.repaint(); System.out.println("监听器已经关闭并回收资源"); } }
}
I


1楼2013-09-17 10:50回复
    呀好乱、、、、


    2楼2013-09-17 10:50
    回复