Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
Java jtree高DPI不可缩放_Java_Swing_Jtree_High Resolution_Highdpi - Fatal编程技术网

Java jtree高DPI不可缩放

Java jtree高DPI不可缩放,java,swing,jtree,high-resolution,highdpi,Java,Swing,Jtree,High Resolution,Highdpi,我有一个使用JTree的java swing应用程序。 我最近换了一台UHD显示器,现在JTree不能很好地扩展。 我感觉它使用图标来缩放线条高度,但我自己不知道如何影响它。 请注意,如果UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())被遗漏,新显示器上的代码太小了。 请参见下面的截图/简单示例代码。 import java.awt.BorderLayout; import java.awt.EventQueu

我有一个使用JTree的java swing应用程序。
我最近换了一台UHD显示器,现在JTree不能很好地扩展。
我感觉它使用图标来缩放线条高度,但我自己不知道如何影响它。
请注意,如果
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())被遗漏,新显示器上的代码太小了。
请参见下面的截图/简单示例代码。

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTree;
import javax.swing.UIManager;

public class JTreeTest extends JFrame
{

   private JPanel contentPane;

   /**
    * Launch the application.
    */
   public static void main(String[] args)
   {
      EventQueue.invokeLater(new Runnable()
      {
         public void run()
         {
            try {
               // Set System L&F
               UIManager.setLookAndFeel(
                     UIManager.getSystemLookAndFeelClassName());
               JTreeTest frame = new JTreeTest();
               frame.setVisible(true);
            } catch (Exception e) {
               e.printStackTrace();
            }
         }
      });
   }

   /**
    * Create the frame.
    */
   public JTreeTest()
   {
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setBounds(100, 100, 450, 300);
      contentPane = new JPanel();
      contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
      contentPane.setLayout(new BorderLayout(0, 0));
      setContentPane(contentPane);

      JTree tree = new JTree();
      contentPane.add(tree, BorderLayout.CENTER);
   }

}
正常分辨率jtree屏幕截图:

UHD分辨率jtree屏幕截图:

谢谢。

也许你需要使用

公共空间设置行高(内部行高)

以像素为单位设置每个单元格的高度。如果指定的值小于或等于零,则针对每行的高度查询当前单元渲染器

import java.awt.*;
import javax.swing.*;

public class JTreeTest2 extends JFrame
{
  private JPanel contentPane;

  /**
   * Launch the application.
   */
  public static void main(String[] args)
  {
    EventQueue.invokeLater(new Runnable()
    {
      public void run()
      {
        try
        {
          // Set System L&F
          UIManager.setLookAndFeel(
            UIManager.getSystemLookAndFeelClassName());
          JFrame frame = new JTreeTest2();
          frame.setVisible(true);
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
      }
    });
  }

  /**
   * Create the frame.
   */
  public JTreeTest2()
  {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    contentPane = new JPanel();
    contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);

    JTree tree = new JTree();
    tree.setFont(tree.getFont().deriveFont(32f));

    JTree tree2 = new JTree();
    tree2.setFont(tree2.getFont().deriveFont(32f));
    tree2.setRowHeight(32);
    //or: tree2.setRowHeight(0);

    JPanel p = new JPanel(new GridLayout(1, 0));
    p.add(new JScrollPane(tree));
    p.add(new JScrollPane(tree2));

    contentPane.add(p, BorderLayout.CENTER);
    setBounds(100, 100, 450, 300);
  }
}