Java jtree高DPI不可缩放
我有一个使用JTree的java swing应用程序。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
我最近换了一台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);
}
}