자바 룩앤필 (L & F) [닫기]


163

개인 용도로 Java Swing을 사용하여 데스크탑 응용 프로그램을 개발하고 있습니다. Java 또는 타사 API를 사용하여 어떻게 할 수 있습니까?


1
Nilo J. González의 LGPL의 look-n-feel 님로드 : personales.ya.com/nimrod/faq-en.html . 약간 버그가 있음 (JButton의 배경색을 설정할 수 없음-반투명 BufferedImage 기술을 사용하여 paintComponent () 재정의로
해결됨

답변:


199

2
애플리케이션이 Nimbus에서 어떻게 보이는지 확인하는 방법은`-Dswing.defaultlaf = javax.swing.plaf.nimbus.NimbusLookAndFeel` 인수로 앱을 시작하십시오. 예 java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar
nos

3
기존 앱에서 Metal Look & Feel 를 사용하려면 -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeelJava 호출 에 매개 변수를 추가하십시오 .
maciej

"Retina"디스플레이에서 어느 것이 괜찮습니까? (OS X뿐 아니라 현재 DPI 화면이 높은 Win 8에는 랩톱도 있습니다)
표시 이름

61

내가 개발하고있는 L & F를 시도 할 수 있습니다 -WebLaF
성공적인 UI 개발에 필요한 세 부분을 결합합니다.

  • 스윙 애플리케이션을위한 크로스 플랫폼 재구성 가능한 L & F
  • 확장 된 스윙 구성 요소의 큰 세트
  • 다양한 유틸리티 및 관리자

바이너리 : https://github.com/mgarin/weblaf/releases
출처 : https://github.com/mgarin/weblaf
라이센스 : GPLv3Commercial

일부 WebLaF 구성 요소가 어떻게 보이는지 보여주는 몇 가지 예 : WebLaF 구성 요소 중 일부

완전히 새로운 L & F로 시작한 주된 이유는 기존 L & F의 대부분에 유연성이 없기 때문입니다. 대부분의 경우에 스타일을 다시 지정할 수 없습니다 (몇 가지 색상 만 변경하고 일부 경우 UI 요소를 켜거나 끌 수 있음). 또는 불편한 방법이 있습니다. 커스텀 써드 파티 컴포넌트 스타일링에 있어서는 더 나빠질 수 있습니다. 특정 L & F에 의해 스타일이 지정된 다른 컴포넌트와는 전혀 다르거 나 심지어 완전히 다른 것이므로 애플리케이션이 전문적이지 않고 불쾌 해 보입니다.

저의 목표는 널리 알려진 유용한 구성 요소 (예 : 날짜 선택기, 트리 테이블, 고정 가능 및 문서 창 및 기타 여러 가지)와 추가 유용한 관리자 및 유틸리티를 포함하여 완전히 사용자 정의 가능한 L & F를 제공하는 것입니다. WebLaF를 애플리케이션에 신속하게 통합하고 Swing을 사용하여 멋진 UI를 만드는 데 필요한 코드.


라이센스를 보지 않고 뛰어 들어가기 전에 라이센스는 gpl입니다. 이것은 일부에게는 문제가 될 수도 있고 아닐 수도 있습니다.
Tinus Tate

상용 라이센스에 몇 백 유로를 투자하는 것이 변호사에게 조언을 구하기 위해 돈을주는 것보다 훨씬 낫다고 생각합니다. 이는 "제품을 사용하는 경우 상용 라이센스를 구입하는 것"일 것입니다. 게다가 그들의 사이트는 상용 라이센스를 구매할 때 우선 순위 기술 지원을받는다고 말합니다.
Jeff Holt

4

JTattoo ( http://www.jtattoo.net/를 사용할 수도 있습니다 . )를 있는 몇 가지 멋진 테마가 있습니다.

jar 파일을 다운로드하여 클래스 경로로 가져 오거나 maven 종속성으로 추가하십시오.

<dependency>
        <groupId>com.jtattoo</groupId>
        <artifactId>JTattoo</artifactId>
        <version>1.6.11</version>
</dependency>

다음은 멋진 테마 중 일부입니다.

  • com.jtattoo.plaf.acryl.AcrylLookAndFeel
  • com.jtattoo.plaf.aero.AeroLookAndFeel
  • com.jtattoo.plaf.aluminium.AluminiumLookAndFeel
  • com.jtattoo.plaf.bernstein.BernsteinLookAndFeel
  • com.jtattoo.plaf.fast.FastLookAndFeel
  • com.jtattoo.plaf.graphite.GraphiteLookAndFeel
  • com.jtattoo.plaf.hifi.HiFiLookAndFeel
  • com.jtattoo.plaf.luna.LunaLookAndFeel
  • com.jtattoo.plaf.mcwin.McWinLookAndFeel
  • com.jtattoo.plaf.mint.MintLookAndFeel
  • com.jtattoo.plaf.noire.NoireLookAndFeel
  • com.jtattoo.plaf.smart.SmartLookAndFeel
  • com.jtattoo.plaf.texture.TextureLookAndFeel
  • com.jtattoo.plaf.custom.flx.FLXLookAndFeel

문안 인사


1

다음은 응용 프로그램 사용자가 사용자 시스템 에 따라 모양과 느낌을 변경할 수있는 대화 상자를 만드는 코드입니다 . 또는 원하는 모양과 느낌을 응용 프로그램에 저장할 수 있으면 "이동식"이 될 수 있으며 이는 원하는 결과입니다.

   public void changeLookAndFeel() {

        List<String> lookAndFeelsDisplay = new ArrayList<>();
        List<String> lookAndFeelsRealNames = new ArrayList<>();

        for (LookAndFeelInfo each : UIManager.getInstalledLookAndFeels()) {
            lookAndFeelsDisplay.add(each.getName());
            lookAndFeelsRealNames.add(each.getClassName());
        }

        String changeLook = (String) JOptionPane.showInputDialog(this, "Choose Look and Feel Here:", "Select Look and Feel", JOptionPane.QUESTION_MESSAGE, null, lookAndFeelsDisplay.toArray(), null);

        if (changeLook != null) {
            for (int i = 0; i < lookAndFeelsDisplay.size(); i++) {
                if (changeLook.equals(lookAndFeelsDisplay.get(i))) {
                    try {
                        UIManager.setLookAndFeel(lookAndFeelsRealNames.get(i));
                        break;
                    }
                    catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                        err.println(ex);
                        ex.printStackTrace(System.err);
                    }
                }
            }
        }
    }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.