2015-09-26 507 views
-5

目前我正在用Java鼠标点击绘制Java程序。就像Photoshop或在微软绘画应用程序一样。 我知道通过设置X轴和Y轴的边界很容易绘制正方形。但是如何用鼠标点击制作像非洲地图那样的复杂形状的方法?有没有为此设置边界? 任何人都可以给我提示吗?谢谢! map of Africa example如何在Java中制作地图绘制软件

+3

这不是代码提供网站。如果你有一些确切的问题,我们将帮助你分享。请参观游览。 – Panther

+1

找出你如何绘制一条线 – MadProgrammer

回答

-2

绘画是可能的与java Graphics。尝试遵循简单的代码。

public class PaintCanves extends JPanel { 

    private int oldX; 
    private int oldY; 

    public PaintCanves() { 
     draw(); 
    } 

    private void draw() { 
     addMouseListener(new MouseAdapter() { 
      @Override 
      public void mousePressed(MouseEvent e) { 
       oldX = e.getX(); 
       oldY = e.getY(); 
      } 
     }); 

     addMouseMotionListener(new MouseMotionAdapter() { 
      @Override 
      public void mouseDragged(MouseEvent e) { 
       getGraphics().drawLine(oldX, oldY, e.getX(), e.getY()); 
       oldX = e.getX(); 
       oldY = e.getY(); 

      } 
     }); 
    } 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setContentPane(new PaintCanves()); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(500, 500); 
     frame.setVisible(true); 
    } 
} 

这是我的测试结果。

enter image description here

注:

它调用repaint()面板时清除已绘制数据。需要使用诸如将绘画点添加到Collection之类的技术来保持绘画点的安全。

+0

....并且请告诉我当你最小化然后恢复你的GUI时会发生什么?你的绘画是否持续?请不要给出误导性的建议,比如像上面那样使用'getGraphics()'。在Swing中绘图是被动的,应该在paintComponent方法中完成,就像下面详细解释的绘画教程一样:[Lesson:Performing Custom Painting](http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html)和[在AWT和Swing中绘画](http://www.oracle.com/technetwork/java/painting-140037.html) –

+0

面板重新绘制。所以它会丢失已经绘制的所有数据。我只是试图向你展示如何使用java绘制鼠标。 –

+0

是的,你展示了原来的海报**错误**的方式来做到这一点! –