2011-10-01 86 views
0

以下代码用于在JPanel上可视化分子,除非在运行时更改JPanel的大小时不会重新缩放。化学开发工具包用于生成渲染图像。一个分子被传递给MoleculeViewer进行可视化。我究竟做错了什么??Java JPanel Paint Scaling

+1

如果不熟悉你所使用的图书馆,你很难说出什么问题。由于该库不是核心Java的一部分,只被少数访问此网站的用户(如果有的话)使用,这是一个非常本地化的问题,这可能不是找到解决方案的最佳网站。你有没有试过在面向化学开发工具包用户的网站上提问? –

+0

我同意以前的评论,但请注意,如果API返回'Image'或'BufferedImage',则可以调整图像大小。当然,通过API生成所需大小的图像可以获得更好的结果,但这是您和API之间的关系。 –

回答

0
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 
2
What am I doing wrong?? 
  • 为什么你需要setSize(new java.awt.Dimension(400, 400));

  • 把你image = new BufferedImage(this.WIDTH, this.HEIGHT, BufferedImage.TYPE_INT_RGB);作为IconJLabel,那么你就可以删除任何有关paintComponent()

  • ,那么你可以返回JLabel而不是JPanel,但默认情况下JLabel是半透明的,或者将JLabel设置为JPanel在这种情况下使用适当的LayoutManagerBorderLayout.CENTER

  • 你必须检查你如何添加MoleculeViewer方式,什么LayoutManager有使用???,因为只有LayoutManager可以使用此作业正确地调整大小(或者不调整)集装箱的孩子的用Top-Level Container

  • MoleculeViewer必须retuns PreferredSize其父

+0

我也试过JLabel。相同的结果。我可以清楚地看到ResizeListener正确设置图像的尺寸。但实际的分子结构停留在第一个尺寸。 – lochi