2009-07-09 2 views
8

대상 플랫폼으로 Windows와 함께 Substance LookAndFeel을 사용하는 Java 응용 프로그램을 가지고 있으며 시스템 구성을 변경하지 않고 없이없이 응용 프로그램의 DPI 설정을 높이고 싶습니다. 내가 알고 있어요 :시스템의 DPI 설정을 변경하지 않고 Java Swing 응용 프로그램의 DPI 해상도를 설정할 수 있습니까?

은 내가 Windows를 다시 시작하고 많은 Windows 응용 프로그램이 매우 높은 DPI 설정에 문제가 (> 120)

PS를 갖고있는 것 같다 있기 때문에하는 사용자를 강제로하지 않기 때문에이 작업을 수행 할 수 Substance LaF는 런타임에 글꼴 크기를 조절할 수 있지만 컨트롤의 높이 만 너비가 아닌 크기가 조절됩니다. 시스템의 DPI 설정을 설정하면 GUI가 완전히 확장되기를 바랍니다.

+1

+1, 그냥 똑같은 질문을하려고했습니다. :) – Epaga

답변

5

가능한지 모르겠다. 보기 & 느낌이 그것을 지원해야하고, 내가 아는 한 Windows Look & 느낌이 아닙니다. 다음은 고려할 수있는 해킹입니다. 모양에 정의 된 모든 글꼴을 반복하여 느껴지고 더 크게 표현할 수 있도록 다시 정의하십시오. 다음은이 수행하는 코드이다 : 나는 당신이 한 단계 더 나아가 타고 비례뿐만 아니라 규모의 테두리를 다시 정의 할 수도있을 것 같군요

for (Iterator i = UIManager.getLookAndFeelDefaults().keySet().iterator(); i.hasNext();) { 
    String key = (String) i.next(); 
    if(key.endsWith(".font")) { 
     Font font = UIManager.getFont(key); 
     Font biggerFont = font.deriveFont(2.0f*font.getSize2D()); 
     // change ui default to bigger font 
     UIManager.put(key,biggerFont); 
    } 
} 

는하지만 매우 매우 빠르게 복잡해진다

+0

Answer 지금까지의 답변 : –

+1

'UIManager'에'Strings '이 아닌 키가 있다면'ClassCastException'을 던집니다. – uckelman

+0

문자열로 변환되어 작동하지 않습니다. – Pavel

1

그래서 실제 대답은 같다 be : 당신은 할 수 없습니다. 시험을 치르기가 너무 힘들어서 정말 실망 스럽습니다.

1

예, 가능하지만 JRE 9에서 실행해야합니다.

Java 런타임이 "DPI 인식"으로 선언되었지만 AWT 및 Swing에서 실제로 지원되지 않았기 때문입니다. Java 응용 프로그램은 크기가 조정되지 않고 픽셀을 기반으로 크기가 조정되고 렌더링되었습니다. 여기에는 HiDPI가 포함됩니다. 어쨌든, 최근에 해결되었습니다. JEP 263: HiDPI Graphics on Windows and Linuxupgrade을 참조하십시오.

그래서 글꼴 크기를 늘리면 나머지 글꼴이 증가하지 않으므로 글꼴 크기를 늘릴 수 없습니다. jvm 인수 -Dsun.java2d.dpiaware=false이 작동하지 않습니다 (실제로 지원되지 않았기 때문에). 매니페스트 파일 + 레지스트리 편집 (Windows 용)은 작동하지 않습니다.

해결책 : 실제로이 기능을 지원하므로 JRE 9에서 실행해야합니다.

관련 문제