Java JPanel 绘制缩放

发布于 2024-12-07 17:36:19 字数 110 浏览 1 评论 0 原文

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

Following code work for visualizing a molecule on a JPanel except it does not rescale when I change the size of JPanel at runtime. The Chemistry Development Kit is used for generating rendered Image. A molecule is passed to MoleculeViewer for visualizing. What am I doing wrong??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一身骄傲 2024-12-14 17:36:19
What am I doing wrong??
  • 为什么你需要setSize(new java.awt.Dimension(400, 400));

  • 将您的 image = new BufferedImage(this.WIDTH, this.HEIGHT, BufferedImage.TYPE_INT_RGB); 设为图标JLabel,然后您可以删除有关 paintComponent()

    的任何

  • 然后您可以返回 JLabel 而不是 JPanel,但是JLabel默认是半透明的,或者把使用正确的 JLabel 添加到 JPanel在本例中为“nofollow">LayoutManager BorderLayout.CENTER

  • 你必须检查如何你添加的方式MoleculeViewer,使用了什么LayoutManager???,因为只有使用LayoutManager才能正确地调整(或不调整)Container的子级大小对于顶级容器

  • MoleculeViewer 必须为其父级重新调整 PreferredSize

What am I doing wrong??
  • why you needed to setSize(new java.awt.Dimension(400, 400));

  • put your image = new BufferedImage(this.WIDTH, this.HEIGHT, BufferedImage.TYPE_INT_RGB); as Icon to the JLabel, then you can remove anything about paintComponent()

  • then you can return JLabel instead of JPanel, but JLabel is translucent by default, or put JLabel to the JPanel by using proper LayoutManager in this case BorderLayout.CENTER

  • you have to check how way you added MoleculeViewer, what LayoutManager is there used???, because only usage of LayoutManager can this job correctly to resize (or not resize) Container's childs with Top-Level Container,

  • MoleculeViewer must retuns PreferredSize for its parent

那片花海 2024-12-14 17:36:19
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
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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文