Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JDK10中的Java Swing图形分辨率和尺寸失真_Java_Swing_Java 8_Java 10 - Fatal编程技术网

JDK10中的Java Swing图形分辨率和尺寸失真

JDK10中的Java Swing图形分辨率和尺寸失真,java,swing,java-8,java-10,Java,Swing,Java 8,Java 10,我已经将基本Swing项目的编译器版本从JDK1.8更新为JDK10。这导致图像分辨率降低,JPanel的大小/尺寸现在看起来有所不同。参见J8与J10的屏幕截图: Java 8: Java 10: 以下是整个应用程序代码: package com.nickjwhite.test; import java.awt.Color; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.Gri

我已经将基本Swing项目的编译器版本从JDK1.8更新为JDK10。这导致图像分辨率降低,JPanel的大小/尺寸现在看起来有所不同。参见J8与J10的屏幕截图:

Java 8:

Java 10:

以下是整个应用程序代码:

package com.nickjwhite.test;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Insets;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;


public class App {

    //UI objects
    private JFrame frame;
    private JPanel contentPane;


    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        new App();
    }

    public App() {
        try {

            //
            //
            //Initialise Parent Frame
            //
            //
            setFrame(new JFrame());
            getFrame().setSize(1200,800); // Dimensions of non-Maximised frame
            getFrame().setTitle("Test App");
            getFrame().setLocationRelativeTo(null); // Centre the frame
            getFrame().setExtendedState(JFrame.MAXIMIZED_BOTH); // Maximise the frame on launch
            getFrame().setIconImage(ImageIO.read(getClass().getClassLoader().getResourceAsStream("test.jpg")));
            getFrame().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Kill process if window closed
            getFrame().setVisible(true);


            //
            //
            //Main content panel
            //
            //
            contentPane = new JPanel(new GridBagLayout());
            contentPane.setBackground(Color.decode("#2e3131"));
            getFrame().setContentPane(contentPane);


            //
            //
            //MenuPanel
            //
            //
            JPanel menuPanel = new JPanel();

                //Initialise Menu

                // Title Background
                //
                JPanel menuTitleBg = new JPanel();
                menuTitleBg.setLayout(new GridBagLayout());
                menuTitleBg.setBackground(Color.decode("#d5b8ff"));

                GridBagConstraints menuTitleBg_constraints = new GridBagConstraints();
                menuTitleBg_constraints.fill = GridBagConstraints.BOTH;
                menuTitleBg_constraints.gridx = 0;
                menuTitleBg_constraints.gridy = 0;
                menuTitleBg_constraints.weightx = 1;
                menuTitleBg_constraints.weighty = 0;
                menuPanel.add(menuTitleBg, menuTitleBg_constraints);

                JLabel testImage = new JLabel();

                GridBagConstraints testImage_constraints = new GridBagConstraints();
                testImage_constraints.insets = new Insets(10, 10, 10, 10);
                testImage_constraints.gridx = 0;
                testImage_constraints.gridy = 0;

                testImage.setSize(new Dimension(80,80));
                testImage.setOpaque(false);
                menuTitleBg.add(testImage,testImage_constraints);

                try {
                    BufferedImage img = ImageIO.read(App.class.getClassLoader().getResourceAsStream("test.jpg"));
                    Image dimg = img.getScaledInstance(testImage.getWidth(), testImage.getHeight(), Image.SCALE_SMOOTH);

                    testImage.setIcon(new ImageIcon(dimg));
                } catch (IOException e) {
                    e.printStackTrace();
                }





            menuPanel.setLayout(new GridBagLayout());
            menuPanel.setBackground(Color.decode("#9b59b6"));
            menuPanel.setPreferredSize(new Dimension(400, (int) (contentPane.getPreferredSize().height)));
            menuPanel.setMinimumSize(new Dimension(400,10));
            GridBagConstraints gbc_panel = new GridBagConstraints();
            gbc_panel.fill = GridBagConstraints.BOTH;
            gbc_panel.gridx = 0;
            gbc_panel.gridy = 0;
            gbc_panel.weightx = 0;
            gbc_panel.weighty = 1;

            JScrollPane menuScrollPane = new JScrollPane(menuPanel);
            menuScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
            menuScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
            menuScrollPane.setPreferredSize(new Dimension(400, (int) (contentPane.getPreferredSize().height)));

            contentPane.add(menuScrollPane , gbc_panel);


            //
            //
            //Action Window Panel
            //
            //
            JPanel actionWindow = new JPanel();
            actionWindow.setLayout(new GridBagLayout());
            actionWindow.setBackground(Color.decode("#2e3131"));
            GridBagConstraints gbc_actionWindow = new GridBagConstraints();
            gbc_actionWindow.anchor = GridBagConstraints.EAST;
            gbc_actionWindow.fill = GridBagConstraints.BOTH;
            gbc_actionWindow.gridx = 1;
            gbc_actionWindow.gridy = 0;
            gbc_actionWindow.weightx = 1;
            gbc_actionWindow.weighty = 1;

            contentPane.add(actionWindow, gbc_actionWindow);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public JFrame getFrame() {
        return frame;
    }

    public void setFrame(JFrame frame) {
        this.frame = frame;
    }

}
我需要继续为这个项目使用JDK10进行编译,但是需要GUI来反映JDK8输出,最好在不调整menuPanel首选大小或TestImageDimensions的情况下实现这一点

有人知道这是什么原因吗


请提供一份说明问题的报告。甚至在Swing之前,我就一直在做
图形
,我没有看到版本之间的分辨率有任何差异。我只是使用Java 8和Java 10运行了我自己的测试(我没有你的图像)。我观察到图像分辨率没有差异。报告的分辨率参数和DPI也与其他内部图形环境细节相同。也许其他人可以提供额外的信息。如果你附上你的图片,我会试试。只是一个建议。请尝试使用“我无法获得与您相同的结果”,而不是
ImageIO
。您确定张贴的代码显示在显示的图像中吗?您使用的是什么PC/OS?