Следующий код работает для визуализации молекулы на JPanel, за исключением того, что она не масштабируется, когда я изменяю размер JPanel во время выполнения.Комплект для разработки химии используется для создания визуализированного изображения.Молекула передается в MoleculeViewer для визуализации.Что я делаю не так ??
What am I doing wrong??
зачем вам нужно setSize(new java.awt.Dimension(400, 400));
setSize(new java.awt.Dimension(400, 400));
поставить image = new BufferedImage(this.WIDTH, this.HEIGHT, BufferedImage.TYPE_INT_RGB); как Icon в JLabel, тогда вы можете удалить что-нибудь о paintComponent()
image = new BufferedImage(this.WIDTH, this.HEIGHT, BufferedImage.TYPE_INT_RGB);
paintComponent()
, тогда вы можете вернуть JLabel вместо JPanel , но JLabel по умолчанию является полупрозрачнымили положите JLabel на JPanel, используя LayoutManager , в данном случае BorderLayout.CENTER
JLabel
JPanel
, вы должны проверить, каккак вы добавили MoleculeViewer, что LayoutManager там используется ???, потому что только использование LayoutManager может правильно выполнить эту задачу для изменения размера (или не изменения размера) дочерних элементов Контейнера с Контейнером верхнего уровня ,
MoleculeViewer
LayoutManager
MoleculeViewer должен повторно PreferredSize для своего родителя
PreferredSize
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