Java JPanel绘制缩放

Java JPanel绘制缩放,java,swing,resize,jpanel,graphics2d,Java,Swing,Resize,Jpanel,Graphics2d,以下代码用于可视化JPanel上的分子,但当我在运行时更改JPanel的大小时,它不会重新缩放。化学显影工具包用于生成渲染图像。一个分子被传送到MoleculeViewer进行可视化。我做错了什么 What am I doing wrong?? 为什么需要setSize(新java.awt.Dimension(400400)) 将您的image=newbufferedimage(this.WIDTH,this.HEIGHT,BufferedImage.TYPE\u INT\u RGB)对于,

以下代码用于可视化JPanel上的分子,但当我在运行时更改JPanel的大小时,它不会重新缩放。化学显影工具包用于生成渲染图像。一个分子被传送到MoleculeViewer进行可视化。我做错了什么

What am I doing wrong??
  • 为什么需要
    setSize(新java.awt.Dimension(400400))

  • 将您的
    image=newbufferedimage(this.WIDTH,this.HEIGHT,BufferedImage.TYPE\u INT\u RGB)对于,则可以删除有关
    paintComponent()的任何内容

  • 然后,您可以返回
    JLabel
    而不是,但是
    JLabel
    在默认情况下是半透明的,或者在这种情况下使用property将
    JLabel
    放入
    JPanel

  • 您必须检查如何添加
    molecleviewer
    ,使用了什么
    LayoutManager
    ,因为只有使用
    LayoutManager
    才能正确调整(或不调整)容器的子对象的大小

  • MolecleViewer
    必须为其父级重新运行
    PreferredSize


如果不熟悉您正在使用的库,就很难说出哪里出了问题。由于该库不是核心Java的一部分,并且只有少数访问此站点的用户(如果有的话)使用它,因此这是一个非常本地化的问题,并且这可能不是找到解决方案的最佳站点。您是否尝试过在面向化学开发工具包用户的网站上提问?我同意前面的评论,但是请注意,如果API返回
图像
缓冲图像
,则可以调整图像大小。当然,通过API生成所需大小的映像将获得更好的结果,但这是您和API之间的事。同样的结果。我可以清楚地看到ResizeListener正确设置了图像的尺寸。但实际的分子结构停留在第一个尺寸。
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