جافا - الشكل والمظهر

لجعل تطبيقنا يبدو أجمل ، تم تصميم بنية Swing لتغيير شكل ومظهر التطبيق أو واجهة المستخدم الرسومية عن طريق فصل كل مكون إلى فئتين مختلفتين: JComponent < / b> و ComponentUI< / b>. على سبيل المثال ، يحتوي كل مثيل من JList على تطبيق ListUI ملموس يرث من الفئة الفائقة ComponentUI.

، استخدم الطريقة:  UIManager.setLookAndFeel(LookAndFeel l) مع اسم فئة LookAndFeel كوسيطة.

بعد التغيير ، تحتاج إلى تحديث شجرة المكونات عن طريق استدعاء الطريقة  سوينغويليتيز.updatecomponentTreeUI(الإطار);

مثال

في هذا المثال، نعلن عن ثابت LOOKANDFEEL الذي سيحتوي على إحدى القيم الصحيحة التالية: Metal، وSystem، Pattern، وGTK. يعمل هذا الرمز تحت Eclipse و Netbeans.

import javax.swing.*; 
import java.awt.*;

الطبقة العامة LookAndFeelTest يمتد JFrame {

العامة LookAndFeelTest () {
// تهيئة lookandfeel
initLookAndFeel ();
// تأكد من تطبيق التعلم
JFrame.setDefaultLookAndFeelDecorated(true);

// إنشاء وتكوين النافذة
إطار JFrame = JFrame الجديد ("SwingApp") ؛
محتويات المكون = createComponents ();
frame.getContentPane () .add (المحتويات ، BorderLayout.CENTER) ؛
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

SwingUtilities.updateComponentTreeUI(frame);
// نافذة العرض
frame.pack () ؛
frame.setVisible (صحيح) ؛
}

/*
* حدد مظهر lookandfeel المراد استخدامه عن طريق تعيين
* ثابت LOOKANDFEEL
* /
السلسلة الثابتة النهائية LOOKANDFEEL = "معدن" ؛

مكون عام إنشاء مكونات () {
زر JButton = JButton جديد ("زر") ؛
تسمية JLabel = JLabel الجديدة (LOOKANDFEEL) ؛

لوحة JPanel = JPanel جديدة (تخطيط الشبكة الجديد (0 ، 1)) ؛
panel.add (زر) ؛
panel.add (التسمية) ؛
panel.setBorder (BorderFactory.createEmptyBorder(30،30،10،30)) ؛

لوحة العودة ؛
}

فراغ ثابت خاص initLookAndFeel () {
سلسلة lookAndFeel = فارغة ؛

if (LOOKANDFEEL!= null) {
switch (LOOKANDFEEL) {
"Metal" box: lookAndFeel = UIManager.getCrossPlatformLookAndFeelClassName (); < / > الحوزة ؛
"النظام": lookAndFeel = UIManager.getSystemLookAndFeelClassName (); < / > الحوزة ؛
"نمط": lookAndFeel = "com.sun.java.swing.plaf.pattern.PatternLookAndFeel" ؛ < / > الحوزة ؛
مربع "GTK": lookAndFeel = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel" ؛ < / > الحوزة ؛
}

جرب {
UIManager.setLookAndFeel(lookAndFeel);
}
catch (باستثناء ه) {
e.printStackTrace();
}
}
}

الفراغ العام الثابت الرئيسي (سلسلة [] args) {
جديد LookAndFeelTest ();
}
}
< / pre> الإخراج: