使用MouseListener绘制一个矩形&的MouseMotionListener

时间:2011-03-29 14:14:27

标签: java swing

我创建了两个包Displaypaint_core,其中包含五个Java文件:Displayable.javaDrawing.javaNewCordinates.java,{{1} }和OldCordinates.java

我正面临一些坐标问题,输出没有达到要求。我的计划有什么问题?

Main.java

Main.java

package paint_core; import Display.Displayable; public class Main { public Main() { } public static void main(String[] args) { new Displayable(); } }

Displayable.java

package Display; import java.awt.Color; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JFrame; public class Displayable extends JFrame implements MouseListener,MouseMotionListener{ Drawing dr; int x,y; OldCordinates op; public Displayable() { setVisible(true); dr = new Drawing(); add(dr); dr.addMouseListener(this); dr.addMouseMotionListener(this); setDefaultCloseOperation(EXIT_ON_CLOSE); } public void mouseDragged(MouseEvent e) { NewCordinates np = new NewCordinates(); np.setX(x); np.setY(y); np.setW(e.getX()-x); np.setH(e.getY()-y); op= dr.setXY(np.getX(),np.getY(),np.getW(),np.getH(),Color.RED,op); } public void mouseMoved(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } public void mousePressed(MouseEvent e) { x=e.getX(); y=e.getY(); op = new OldCordinates(); op.setX(x); op.setY(y); op.setW(x); op.setH(y); } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } }

Drawing.java

package Display; import java.awt.*; import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; public class Drawing extends JPanel { private int x,y,w,h; Color r; OldCordinates op; public OldCordinates setXY(int x,int y,int w,int h,Color r,OldCordinates op) { this.x = x; this.y = y; this.w = w; this.h = h; this.r = r; this.op = op; //System.out.println("Old Cordinates" + op.getW()+" "+op.getY()); repaint(); op.setH(h); op.setW(w); //System.out.println("New Cordinates" + w+" "+h); return op; } @Override public void paint(Graphics g) { g.drawRect(op.getX(),op.getY(),op.getW(),op.getH()); g.setColor(r); g.drawRect(x,y,w,h); } }

OldCordinates.java

package Display; import java.awt.*; import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; public class Drawing extends JPanel { private int x,y,w,h; Color r; OldCordinates op; public OldCordinates setXY(int x,int y,int w,int h,Color r,OldCordinates op) { this.x = x; this.y = y; this.w = w; this.h = h; this.r = r; this.op = op; //System.out.println("Old Cordinates" + op.getW()+" "+op.getY()); repaint(); op.setH(h); op.setW(w); //System.out.println("New Cordinates" + w+" "+h); return op; } @Override public void paint(Graphics g) { //g.drawRect(op.getX(),op.getY(),op.getW(),op.getH()); g.setColor(r); g.drawRect(x,y,w,h); } }

NewCordinates.java

1 个答案:

答案 0 :(得分:0)

您应该覆盖paintComponent而不是paint。如果这不是您的问题,请提供更多详细信息