2016-12-17 10 views
2

JTree를 사용하는 자바 스윙 응용 프로그램이 있습니다.
최근 UHD 모니터로 옮겼습니다. 이제는 JTree가 확장되지 않았습니다.
아이콘을 사용하여 선 높이를 조절하는 느낌이 들지만, 내 자신에게 어떤 영향을 미치는지 실마리가 없습니다.
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());을 입력하지 않으면 새 모니터에서 읽을 수 없을 정도로 작습니다.
아래의 스크린 샷/간단한 예제 코드를 참조하십시오.
jtree 높은 DPI가 축척되지 않음

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 스크린 샷 :

https://i.stack.imgur.com/n4fUe.png

UHD 해상도의 JTree 스크린 샷 :

https://i.stack.imgur.com/hvXMf.png

감사합니다.

답변

2

은 아마 당신은 JTree#setRowHeight(int)

공공 무효 setRowHeight (INT의 rowHeight를)

를 픽셀 단위로 각 셀의 높이를 설정을 사용해야합니다. 지정된 값이 0보다 작거나 같으면 현재 셀 렌더러가 각 행의 높이에 대해 쿼리됩니다.

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); 
    } 
}