Java的JDialog画图问题

Joy_gyc 发布于 2013/11/28 18:00
阅读 658
收藏 1

我模拟一个画图界面,使用了JDialog界面设计,模拟微软画图画直线时候的鼠标拖拽,

   public void draw(Graphics g){
        super.paint(g);
        if(type == LINE){
            g.drawLine(x, y, x2, y2);
        }
    }
使用super.paint(g),时候就出现这个情况,如果不用就是上边夹缝中那样无限画线,有什么解决方法么?还是有什么方法画直线!!!

以下是问题补充:

@Joy_gyc:还想问下,那我设计的这个画直线怎么用鼠标监控出来画的直线和鼠标指定位置不同,x与y相差50个距离左右 private void jPanelMouseReleased(java.awt.event.MouseEvent evt) { // TODO add your handling code here: x2 = evt.getX(); y2 = evt.getY(); repaint(); } 还有怎么设置画线不会超出JPanel呢?十分感谢了额 (2013/11/28 21:38)
加载中
0
nile
nile

 不要手工调用任何层次的paint方法,这个方法是给系统用的。
一般来说会自己从JPanel中扩展出一个类,重写paint(Graphic g)方法,在这个方法里面绘制你要的内容。

g.draw(....)

另外,响应鼠标事件,需要添加一个MouseListener,move click等事件,绘制的内容发生变化的时候,调用panel的repaint方法来更新。

希望对你有帮助

http://oreilly.com/catalog/java2d/chapter/ch04.html

Joy_gyc
Joy_gyc
回复 @nile : 嗯,再次感谢了!!!
nile
nile
回复 @Joy_gyc : 鼠标的位置问题,要获取相对于panel的偏移量,不是相对窗口的偏移量
Joy_gyc
Joy_gyc
还想问下,那我设计的这个画直线怎么用鼠标监控出来画的直线和鼠标指定位置不同,x与y相差50个距离左右,还有怎么设置画线不会超出JPanel呢?十分感谢了额
Joy_gyc
Joy_gyc
嗯,先谢谢你了,试试不行再问!!第一次接触图形类东西,太多不懂了,十分感谢解答!!
返回顶部
顶部