绘制与java对应的对象图_java – 面向对象的2D图形方法:将JPanel点击委托给绘制的对象...

来自Qt,我总是使用QGraphicsScene与QGraphicsItem对象相关联来绘制流程图,游戏板等等.图形场景是小部件,它们是Swt组件的Qt等价物.这些QGraphicsItem对象具有自己的单击处理程序,因此对图形场景的某些部分的单击会自动委派给正确的图形项.

我想在Java Swing中复制这个工作流程.到目前为止,我只找到了一种手动绘制所有内容的方法,这也意味着我必须手动编写点击逻辑.它涉及子类化JPanel并重写paintComponent函数,如下所示:

public void paintComponent(Graphics g) {

super.paintComponent(g);

Graphics2D g2 = (Graphics2D)g;

for (int row = 0; row < _numRows; ++row) {

for (int col = 0; col < _numCols; ++col) {

g2.drawRect(2 + _squareSize*col, 2 + _squareSize*row, _squareSize, _squareSize);

}

}

}

Java Swing是否有类似的面向对象的方式来绘制2D图形?

解决方法:

通常有两种方法可以实现:

>使用单个JComponent作为基础并直接将所有“项目”绘制到其上(在paintComponent方法中).在这种情况下,您必须自己处理所有鼠标/键事件,方法是向该JComponent添加鼠标/键侦听器,并根据按下的单击位置/热键处理事件.

>另一种方法是使用任何Container(或简单的JPanel)作为基础,并使用布局将任何其他Component放置到它上(例如,使用“null”布局,您可以简单地将组件放在容器内的绝对坐标,也称为边界).在这种情况下,不同的事件将直接传递给那些组件,具体取决于它们在容器内的位置(基本上 – 每个组件都有一个矩形边界,如果没有任何东西位于其上,所有事件都将传递给该组件,但您可以更改它“点击“你想要的任何形状的区域”.同样在这种情况下,您可以使用自定义绘制的组件作为子项或标准Swing组件(如JButton,JCheckBox等).

在大多数情况下,第二种方式是最好的,虽然第一种方式可能有用(例如,在创建一些图像编辑器,类似绘画的应用程序或任何其他适用于图形的应用程序时).

标签:java,swing,jpanel,graphics2d,paintcomponent

来源: https://codeday.me/bug/20190530/1183490.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值