2010-01-11 3 views
10

Windows 7에서 제어판 -> 모양 및 개인 설정 -> "텍스트 및 기타 항목을 더 크게 또는 더 작게"표시를 통해 글꼴 크기를 변경하면, 메뉴 크기뿐 아니라 메모장, 워드 패드, 파이어 폭스와 같은 앱의 텍스트 콘텐츠 크기도 고려해야합니다.Java가 자동으로 Windows 7 글꼴 크기 조정으로 조정

수동으로 크기를 조정하지 않고도 자동으로 글꼴 크기를 조정할 수있는 방법이 있습니까?

답변

0

이것은 전적으로 사용중인 GUI 툴킷에 따라 다릅니다. SWT가 자동으로 새 크기를 선택한다는 것은 거의 확실합니다 (네이티브 위젯을 사용하기 때문에). AWT는 내가 아는 모든 것일지도 모른다. 어떤 툴킷을 사용하고 있는지, 그리고 원하는 툴킷을 아직 선택하지 않았는지 여부를 지정할 수 있습니까?

6

두 부분이 여기에 있습니다 :

  1. 등 당신의 구성 요소, 글꼴을 얻기가 규모 스윙

에 레이아웃을 얻기

  • 을 확장하기 위해, 첫 번째 부분은 쉽게 - 모두 하나의 통화로 시작됩니다.

    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    

    Windows에서는 DPI (Small/Large Fonts) 설정을 준수하게됩니다.

    여기에 나는 그것이 96dpi (일반 글꼴 크기) @ Windows 7에서 내 컴퓨터에서 보이는 방법을 보여, 함께 던진 빠른 테스트 응용 프로그램에서 두 스크린 샷입니다 144dpi (150 %)

    먼저 기본 글꼴 크기 @ 샘플 : 확대 (150 %) 폰트 사이즈 세트로 지금

    Swing app with Windows using normal font sizes

    :

    Swing app with Windows using Larger font sizes

    실행 사이에 코드가 변경되지 않고 새로운 DPI 설정으로 & 만 로그 아웃합니다. 내 컨테이너가 크기가 조정되지 않음을 보여주기 위해 고정 된 프레임 크기를 설정했습니다. 이로 인해 내 레이블이 맞춰 지도록 내렸습니다.

    여기 내 소스 코드 - & 붙여 넣기를 절단하고 스스로를 실행

    import java.awt.FlowLayout; 
    
    import javax.swing.JButton; 
    import javax.swing.JFrame; 
    import javax.swing.JLabel; 
    import javax.swing.JPanel; 
    import javax.swing.SwingUtilities; 
    import javax.swing.UIManager; 
    
    public class SwingFontTest 
    { 
        private static void createGUI() 
        { 
         JButton button = new JButton("my button with Some Text"); 
         JLabel label = new JLabel("and a label"); 
    
         JPanel panel = new JPanel(new FlowLayout()); 
         panel.add(button); 
         panel.add(label); 
    
         JFrame frame = new JFrame("Title!"); 
         frame.setContentPane(panel); 
         frame.setSize(300,125); 
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
         frame.setVisible(true); 
        } 
    
        public static void main(String[] args) 
        { 
         try 
         { 
          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
         } 
         catch (Exception e) 
         { 
          e.printStackTrace(); 
         } 
    
         SwingUtilities.invokeLater(new Runnable() { 
          @Override 
          public void run() 
          { 
           createGUI(); 
          } 
         }); 
        } 
    
    } 
    

    찾는 위치 & 느낌은 기본 크기를 제공하지만, 자신의 레이아웃으로 확장 단위를 사용하는 GUI 저자에게 달려 있습니다. 노력이 필요합니다 (확장 가능한 레이아웃은 웹 페이지에도 큰 고통이됩니다!). 그러나 확실히 달성 할 수 있습니다.

    이러한 레이아웃은 DPI로 확장되므로 대화 상자 단위 (DLU)에서 레이아웃을 정의 할 수있는 FormLayout과 같은 레이아웃을 사용하는 것이 좋습니다. 그렇게하면 컨테이너의 크기를 확장 할 수 있고 크기 조정으로 인해 레이블이 다음 줄로 이동하는 것을 제한하는 데 도움이됩니다. 대화 상자 단위를 사용하여 프레임의 크기를 결정한 경우에는 크기가 같아 보이도록 만들 수 있습니다.

    늦었습니다. - 지금은 그렇습니다.

  • 관련 문제