我一直在对一个应用程序的想法进行原型设计,但由于我是一个比应用程序开发人员更好的 Swing 开发人员,所以我正在使用 Swing 来实现它。我想让它使用 JavaFX MediaPlayer/JFXPanel 在 JDialog 中嵌入视频,而且我已经快完成了。它确实嵌入了它,但随后它缩小了我所有的 Swing 组件。 JFXPanel 的大小符合我的预期,但我所有的摆动组件都按比例缩小了。我必须拉伸 JDialog 窗格才能看到所有组件,并且字体都很小等等。我在寻找此问题的答案时遇到了困难,但如果这是一个重复的问题,我将不胜感激指向答案的指针。这是一些图片。
我尝试了各种方法,例如根本不嵌入它,而是将视频放在单独的 JFrame 中,我尝试不使用 JFXPanel 等。嵌入比我尝试过的任何其他方法都让我更接近。我尝试为我的 Swing 组件等设置 MinimumSize 和 PreferredSize。它只是将其全部缩小。
编辑:我使用
检查了屏幕尺寸 Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
System.out.println("screensize "+screenSize.getWidth() + " by "+screenSize.getHeight());
当我将此代码放入主 Swing 类中时,我得到了
屏幕尺寸 1536.0 x 864.0
但是在 SceneGenerator 类中,在 createScene 方法中我得到了
屏幕尺寸 3840.0 x 2160.0
一旦我创建了一个场景,它就会认为我拥有一台分辨率更高的机器。我不知道如何解决它。我需要一致性! :)
好的。这是 Kludgy 的解决方案。
在我的主屏幕构造函数(JPanel 类)中,我创建一个带有默认视频的场景。这会改变 DPI。然后,我通过将 Swing 下想要的尺寸乘以新的 (fx) dpi 与原始 (swing) dpi 的比率来重新设置尺寸。这解决了问题,因为这只是一个用于演示目的的愚蠢原型,所以我对此表示同意。这永远不会是可操作的代码。如果我找到有人想要开发我的应用程序,他们会想要使用真正的计算机科学家。
但是,如果有人对此有真正的解决方案,无论是使用 CSS 还是其他解决方案,请提出!