Java Look and Feel (L&F) [ปิด]


163

ฉันกำลังพัฒนาแอพพลิเคชั่นบนเดสก์ท็อปด้วย Java Swing สำหรับการใช้งานส่วนตัวของฉันฉันต้องการรูปลักษณ์ที่สวยงามสำหรับแอพพลิเคชั่นของฉัน ฉันจะใช้ Java หรือ API ของบุคคลที่สามได้อย่างไร


1
LGPL'ed ดู-N-รู้สึกนิมโดยนิเจGonzález: personales.ya.com/nimrod/faq-en.html รถเล็ก ๆ น้อย ๆ (ไม่สามารถตั้งค่าสีพื้นหลังสำหรับ JButton - แก้ไขด้วย paintComponent () การแทนที่โดยใช้เทคนิค BufferedImage โปร่งแสง)
4252 ecle

คำตอบ:


199

2
วิธีที่รวดเร็วในการดูว่าแอปพลิเคชันของคุณมีลักษณะอย่างไรใน Nimbus ให้เริ่มแอปด้วยอาร์กิวเมนต์ `-Dswing.defaultlaf = javax.swing.plaf.nimbus.NimbusLookAnd sense` เช่น java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar
nos

3
หากต้องการใช้Metal look and feelในแอพที่มีอยู่ให้เพิ่ม-Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeelพารามิเตอร์ลงในการเรียกใช้จาวา
maciej

ข้อใดที่ใช้ได้บนจอแสดงผล "Retina" (ไม่เพียง แต่ใน OS X เท่านั้นยังมีแล็ปท็อปใน Win 8 ที่มีหน้าจอ DPI สูงในตอนนี้เช่นกัน)
ชื่อที่แสดง

61

คุณสามารถลอง L&F ที่ฉันกำลังพัฒนา - WebLaF
มันรวมสามส่วนที่จำเป็นสำหรับการพัฒนา UI ที่ประสบความสำเร็จ:

  • L&F ที่ปรับเปลี่ยนได้ข้ามแพลตฟอร์มสำหรับแอปพลิเคชัน Swing
  • ชุดส่วนประกอบสวิงที่ขยายใหญ่
  • สาธารณูปโภคและผู้จัดการต่าง ๆ

ไบนารี: https://github.com/mgarin/weblaf/releases
ที่มา: https://github.com/mgarin/weblaf
ใบอนุญาต: GPLv3และเชิงพาณิชย์

ตัวอย่างเล็ก ๆ น้อย ๆ แสดงให้เห็นว่าองค์ประกอบของ WebLaF มีลักษณะอย่างไร: องค์ประกอบบางอย่างของ WebLaF

เหตุผลหลักที่ทำให้ฉันเริ่ม L&F ใหม่โดยสิ้นเชิงคือ L&F ที่มีอยู่ส่วนใหญ่ขาดความยืดหยุ่น - คุณไม่สามารถจัดสไตล์ใหม่ได้ในกรณีส่วนใหญ่ (คุณสามารถเปลี่ยนสีได้เพียงไม่กี่สีและเปิด / ปิดองค์ประกอบ UI ในกรณีที่ดีที่สุด) และ / หรือมีวิธีที่ไม่สะดวกในการทำเช่นนั้น มันยิ่งแย่ลงเมื่อพูดถึงการออกแบบส่วนประกอบของบุคคลที่สามที่กำหนดเอง - พวกเขาไม่ได้ดูคล้ายกับส่วนประกอบอื่น ๆ ที่ออกแบบโดย L&F ที่เฉพาะเจาะจงหรือแตกต่างกันโดยสิ้นเชิง - ซึ่งทำให้แอปพลิเคชันของคุณดูไม่เป็นมืออาชีพ

เป้าหมายของฉันคือการจัดหา L&F ที่ปรับแต่งได้อย่างสมบูรณ์พร้อมชุดส่วนประกอบที่เป็นที่รู้จักและมีประโยชน์เพิ่มเติม (ตัวอย่างเช่น: ตัวเลือกวันที่, ตารางต้นไม้, แท่นวางและบานหน้าต่างเอกสารและอื่น ๆ อีกมากมาย) และผู้จัดการและสาธารณูปโภคที่เป็นประโยชน์เพิ่มเติม จำนวนรหัสที่ต้องใช้เพื่อรวม WebLaF เข้ากับแอปพลิเคชันของคุณอย่างรวดเร็วและช่วยสร้าง UIs ที่ยอดเยี่ยมโดยใช้ Swing


โปรดทราบว่าก่อนที่จะกระโดดโดยไม่ดูใบอนุญาตว่าใบอนุญาตเป็น gpl สิ่งนี้อาจจะใช่หรือไม่ใช่ปัญหาสำหรับบางคน
Tinus Tate

ฉันคิดว่าการใช้จ่ายใบอนุญาตเชิงพาณิชย์สักสองสามร้อยยูโรนั้นดีกว่าการให้เงินกับทนายความของคุณสำหรับคำแนะนำของเขาซึ่งน่าจะเป็น "ซื้อใบอนุญาตการค้าถ้าคุณใช้ผลิตภัณฑ์" นอกจากนี้ไซต์ของพวกเขาบอกว่าคุณได้รับการสนับสนุนด้านเทคนิคที่สำคัญเมื่อคุณซื้อลิขสิทธิ์การค้า
Jeff Holt

4

นอกจากนี้คุณยังสามารถใช้ JTattoo ( http://www.jtattoo.net/ ) มันมีธีมเจ๋ง ๆ ที่สามารถใช้ได้

เพียงดาวน์โหลด jar และนำเข้าสู่ classpath ของคุณหรือเพิ่มเป็นพึ่งพา 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

รหัสที่สร้างไดอะล็อกซึ่งอนุญาตให้ผู้ใช้แอปพลิเคชันของคุณเปลี่ยนรูปลักษณ์และความรู้สึกตามระบบของผู้ใช้ หรือถ้าคุณสามารถเก็บ Look and Feel's ที่ต้องการลงในใบสมัครของคุณพวกเขาก็อาจจะ "พกพา" ซึ่งเป็นผลลัพธ์ที่ต้องการ

   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.