【问题标题】:Java JPanel Paint ScalingJava JPanel 绘制缩放
【发布时间】:2011-10-01 19:19:48
【问题描述】:

以下代码可用于在 JPanel 上可视化分子,但当我在运行时更改 JPanel 的大小时它不会重新缩放。化学开发套件用于生成渲染图像。一个分子被传递给 MoleculeViewer 进行可视化。我做错了什么??

【问题讨论】:

  • 如果您不熟悉您正在使用的库,很难说出哪里出了问题。由于该库不是核心 Java 的一部分,并且仅由少数访问此站点(如果有)的人使用,因此这是一个非常本地化的问题,这可能不是寻找解决方案的最佳站点。您是否尝试过在面向化学开发工具包用户的网站上提问?
  • 我同意前面的评论,但请注意,如果 API 返回 ImageBufferedImage,则可以调整图像大小。当然,API 生成所需大小的图像会获得更好的结果,但这在您和 API 之间。

标签: java swing resize jpanel graphics2d


【解决方案1】:
What am I doing wrong??
  • 为什么需要setSize(new java.awt.Dimension(400, 400));

  • 把你的image = new BufferedImage(this.WIDTH, this.HEIGHT, BufferedImage.TYPE_INT_RGB);作为Icon放到JLabel,然后你可以删除任何关于paintComponent()的东西

  • 那么你可以返回JLabel而不是JPanel,但是JLabel默认是半透明的,或者在这种情况下使用正确的LayoutManagerJLabel放入JPanelBorderLayout.CENTER

  • 1234563 Top-Level Container,
  • MoleculeViewer 必须为其父级返回 PreferredSize

【讨论】:

  • 我也试过 JLabel。结果相同。我可以清楚地看到 ResizeListener 正确设置了图像的尺寸。但实际的分子结构停留在最初的尺寸。
【解决方案2】:
Adding following resolved the not redrawing upon scaling problem 

renderer.paint(molecule_, new AWTDrawVisitor(g2), new Rectangle2D.Double(0, 0, w, h), false);
            g2.dispose();
            }
            else

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多