تشبه مكونات التأرجح مكونات AWT، ولكنها تضيف طرقًا جديدة لكل مكون وتوفر مكونات أكثر تقدمًا.
المكونات الأساسية للتأرجح:
1. الزر (JButton):
يمكن للأزرار في Swing عرض الصور، ويمكن تعيين الزر كرمز افتراضي لنافذة، ويمكن تعيين صور متعددة للزر.
(1) طرق البناء الشائعة الاستخدام لـ JButton.
JButton (نص السلسلة): الأحرف المعروضة على الزر.
JButton (أيقونة الأيقونة): عرض الأيقونة على الزر.
JButton (نص السلسلة، أيقونة الرمز): يتم عرض كل من الرموز والأحرف على الزر.
(2) الطرق المستخدمة عادة:
b1.setEnabled(false); //جعل الزر غير متاح حاليًا
b1.setToolTipText("...")): // تعيين نص طرف الزر
b1.setMnemonic(KeyEvent.VK_D); // ربط b1 بالمفتاح alt+D
(3). رمز الحالة:
انسخ رمز الكود كما يلي:
الطبقة العامة JButtonExample3 تمتد JPanel تنفذ ActionListener {
JButton المحمي b1، b2، b3؛
JButtonExample3 العامة () {
ImageIcon leftButtonIcon = createImageIcon("right.gif");
ImageIcon middleButtonIcon = createImageIcon("middle.gif");
ImageIcon rightButtonIcon = createImageIcon("left.gif");
b1 = new JButton("الزر الأوسط غير صالح (D)"، leftButtonIcon);
b1.setVerticalTextPosition(AbstractButton.CENTER);//محاذاة المركز الأفقي
b1.setHorizontalTextPosition(AbstractButton.LEADING);// يعادل اليسار
b1.setMnemonic(KeyEvent.VK_D); // ربط b1 بالمفتاح alt+D
b1.setActionCommand("تعطيل");
b2 = new JButton("الزر الأوسط M"، middleButtonIcon);
b2.setVerticalTextPosition(AbstractButton.BOTTOM);
b2.setHorizontalTextPosition(AbstractButton.CENTER);
b2.setMnemonic(KeyEvent.VK_M); // ربط b2 بالمفتاح alt+M
b3 = new JButton("E ينشط الزر الأوسط"، rightButtonIcon);
b3.setMnemonic(KeyEvent.VK_E); // ربط b3 بالمفتاح alt+E
b3.setActionCommand("تمكين");
b3.setEnabled(false);
// أضف مستمعي الأحداث إلى 1 و 3
b1.addActionListener(this);
b3.addActionListener(this);
// تعيين نص موجه للزر
b1.setToolTipText("النقر على هذا الزر سيؤدي إلى إبطال الزر الأوسط!");
b2.setToolTipText("انقر فوق هذا الزر، لن يحدث أي حدث!");
b3.setToolTipText("النقر على هذا الزر سيجعل الزر الأوسط فعالاً");
// إضافة زر إلى JPanel
إضافة(ب1);
إضافة(ب2);
إضافة(ب3);
}
إجراء باطل عام (ActionEvent e) {
إذا ("تعطيل". يساوي (e.getActionCommand())) {
b2.setEnabled(false);
b1.setEnabled(false);
b3.setEnabled(true);
} آخر {
b2.setEnabled(true);
b1.setEnabled(true);
b3.setEnabled(false);
}
}
ImageIcon ثابت محمي createImageIcon(مسار السلسلة) {
java.net.URL imgURL = JButtonExample3.class.getResource(path);
إذا (imgURL!= فارغة) {
إرجاع ImageIcon جديد (imgURL)؛
} آخر {
System.err.println("تعذر العثور على الملف: " + المسار);
عودة فارغة؛
}
}
public static void main(String[] args) {
// الإعداد لاستخدام واجهة التأرجح الجديدة
// يوفر تلميحًا حول ما إذا كان JFrame الذي تم إنشاؤه حديثًا يجب أن يحتوي على زخارف النوافذ المتوفرة له من خلال المظهر الحالي (مثل الحدود، وعناصر واجهة المستخدم لإغلاق النافذة، والعناوين، وما إلى ذلك).
JFrame.setDefaultLookAndFeelDecorated(true);
// أنشئ نموذجًا
إطار JFrame = new JFrame("زر التنين الصغير");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// إنشاء لوحة
JButtonExample3 newContentPane = new JButtonExample3();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
// نموذج العرض
frame.pack();
frame.setLocation(300, 200);
frame.setVisible(true);
}
}
تشغيل لقطة الشاشة:
2. مربع التحرير والسرد (JComboBox):
شرح تفصيلي لكيفية استخدام مربع التحرير والسرد (القائمة المنسدلة JComboBox) والأمثلة:
طريقة البناء:
* يقوم JComboBox() بإنشاء مكون JComboBox.
* JComboBox (نموذج ComboBoxModel) قم بإنشاء مكون JComboBox بناءً على النموذج.
* يستخدم JComboBox(Objext[] items) كائنات الصفيف لإنشاء مكون JComboBox.
* يستخدم JComboBox (عناصر المتجهات) كائنات Vector لإنشاء مكون JComboBox.
الطرق الشائعة الاستخدام:
....
مثال شامل:
انسخ رمز الكود كما يلي:
import java.awt.*; /* يحتوي على كافة الفئات لإنشاء واجهات المستخدم ورسم الصور الرسومية. */
import javax.swing.*; /* قم بتوفير مجموعة من المكونات "خفيفة الوزن" وحاول جعل هذه المكونات تعمل بنفس الطريقة على جميع الأنظمة الأساسية */
الطبقة العامة JComboBoxDemo تمتد JFrame {
عامة JComboBoxDemo() {
/*
* الحاوية هي الفئة الأصلية لجميع الحاويات وفئة فرعية لفئة مكونات لغة Java Component. الحاوية هي مكون له وظيفة استيعاب المكونات والحاويات الأخرى.
* العنصر الأساسي في واجهة مستخدم Java الرسومية هو المكون. المكون هو كائن يمكن عرضه على الشاشة بيانيًا والتفاعل مع المستخدم، مثل زر أو مربع نص وما إلى ذلك.
* في Java، يتم عادةً وضع المكونات في حاوية معينة ويتم استخدام الأسلوب this.getContentPane() لإرجاع كائن contentPane من هذا النموذج.
*/
محتوى الحاوية = this.getContentPane();
/* قم بإنشاء كائن لوحة، وحدد مدير التخطيط كـ GridLayout، وصف واحد وعمودين، وإدارة التخطيط الافتراضية لـ Jpanel هي FlowLayout */.
JPanel jPanel1 = new JPanel(new GridLayout(1, 2));
// أنشئ JComboBox باستخدام مصفوفة السلسلة
String[] الفاكهة = { "تفاحة"، "موز"، "برتقال"، "كمثرى"، "مانجو" };
JComboBox jComboBox1 = new JComboBox(fruit);
jComboBox1.addItem("Other"); // أضف خيارًا "آخر" آخر في نهاية خيارات مربع القائمة
// قم بتعيين الحد المعنون لكائن jList1
jComboBox1.setBorder(BorderFactory.createTitledBorder("الفاكهة المفضلة لديك:"));
// أضف مربع القائمة jComboBox1 إلى اللوحة
jPanel1.add(jComboBox1);
// استخدم ComboBoxModel لإنشاء JComboBox
ComboBoxModel myModel = new MyModel();
JComboBox jComboBox2 = new JComboBox(myModel);
// قم بتعيين الحد المعنون لكائن jList1
jComboBox2.setBorder(BorderFactory.createTitledBorder("الفاكهة المفضلة لديك:"));
// أضف مربع القائمة jComboBox2 إلى اللوحة
jPanel1.add(jComboBox2);
// أضف لوحة إلى الحاوية الأصلية
contentPane.add(jPanel1);
// قم بتعيين عنوان هذا النموذج
this.setTitle("JComboBoxDemo");
// قم بتعيين الحجم الأولي الذي يعرضه هذا النموذج
this.setSize(350, 90);
this.setLocation(300, 200);
// قم بتعيين هذا النموذج ليكون مرئيًا في البداية
this.setVisible(true);
}
يمتد فئة MyModel DefaultComboBoxModel {
String[] الفاكهة = { "تفاحة"، "موز"، "برتقال"، "كمثرى"، "مانجو" };
نموذجي () {
لـ (int i = 0; i < Fruit.length; i++) {
/* يتم استخدام أسلوب addElement() لإضافة عناصر الخيار إلى مربع القائمة */
this.addElement(fruit[i]);
}
}
}
public static void main(String args[]) {
اختبار JComboBoxDemo = جديد JComboBoxDemo();
}
}
لقطة الشاشة:
3. مربع القائمة (JList):
تشبه وظيفة مربع القائمة وظيفة مربع القائمة المنسدلة، كما أنها تتيح للمستخدمين الاختيار من بين عدة عناصر، ولكن هناك بعض الاختلافات، فهي توفر للمستخدمين أوضاع تحديد أكثر تنوعًا، بما في ذلك التحديد الفردي والاختيار المستمر والاختيار المتعدد، المطابق للثوابت الثلاثة في ListSelectionModel:
(1) يمكن تحديد عدد صحيح واحد فقط من SINGLE_SELECTION.
(2) عدد صحيح ثابت SINGLE_INTERVAL_SELECTION اضغط مع الاستمرار على مفتاح [Shift] لتحديد الفاصل الزمني للاتصال.
(3) عدد صحيح ثابت MULTIPLE_INTERVAL_SELECTION اضغط باستمرار على المفتاح [Ctrl] لتحديد عناصر متعددة.
المنشئ هو كما يلي:
(1) تقوم JList() بإنشاء مكون JList.
(2) JList (نموذج ListModel) قم بإنشاء مكون JList بناءً على النموذج.
(3) يستخدم JList(Object[] items) كائنات المصفوفة لإنشاء مكون JList.
(4) JList (عناصر المتجهات) استخدم كائنات Vector لإنشاء مكون JList.
يمكن أن تؤدي إضافة مربع القائمة JList إلى JScrollPane إلى تحقيق التمرير في مربع القائمة.
المثال 1 لاستخدام مكون القائمة (JList) هو كما يلي:
انسخ رمز الكود كما يلي:
الطبقة العامة JListDemo1 تمتد JFrame {
جزء محتوى الحاوية؛
JPanel جي بي؛
JList jList1,jList2,jList3;
JListDemo1 العامة () {
contentPane = this.getContentPane();
jp = new JPanel(new GridLayout(1,3));
// استخدم مصفوفة السلسلة لإنشاء كائن JList
String[] Fruit={"apple"، "banana"، "orange"، "pear"، "mango"}؛
jList1=new JList(fruit);
// قم بتعيين الحد المعنون لكائن jList1
jList1.setBorder(BorderFactory.createTitledBorder("الفاكهة المفضلة لديك: "));
// اضبط وضع التحديد لكائن jList1 على تحديد واحد
jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jp.add(jList1);
// استخدم ListModel لإنشاء كائن JList لتحقيق ديناميكيات محتوى القائمة
ListModel myModel=new MyModel(); // إنشاء كائن نموذج القائمة
jList2=new JList(myModel); // أنشئ قائمة بناءً على كائن نموذج القائمة
jList2.setBorder(BorderFactory.createTitledBorder("الفاكهة المفضلة لديك: "));
// اضبط وضع التحديد لكائن jList2 للضغط باستمرار على [Ctrl] لتحديدات متعددة
jList2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
jp.add(jList2);
jList3=new JList(fruit);
jList3.setBorder(BorderFactory.createTitledBorder("الفاكهة المفضلة لديك: "));
jList3.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
jList3.setVisibleRowCount(3);
jList3.setFixedCellWidth(120);
jList3.setFixedCellHeight(30);
JScrollPane jScrollPane = new JScrollPane(jList3);
jp.add(jScrollPane);
contentPane.add(jp);
this.setTitle("JListDemo");
this.setSize(340,200);
//علية()؛
this.setLocation(400, 300);
this.setVisible(true);
}
// من خلال وراثة فئة DefaultListModel، يمكن تحقيق اختيار قائمة المحتوى الديناميكي
يمتد فئة MyModel DefaultListModel {
String[] Fruit={"apple"، "banana"، "orange"، "pear"، "mango"}؛
نموذجي (){
for(int i=0;i<fruit.length;i++){
/* إضافة عنصر باطلة (كائن الكائن)
* يضيف المكون المحدد إلى نهاية هذا الجدول. */
this.addElement(fruit[i]);
}
}
}
public static void main(String[] args){
اختبار JListDemo1=new JListDemo1();
}
}
وتظهر نتائج التشغيل في الشكل أدناه:
مثال مربع القائمة 2 رمز:
انسخ رمز الكود كما يلي:
الطبقة العامة JListDemo2 تمتد JFrame {
جزء محتوى الحاوية؛
JPanel جي بي؛
JList jListFont, jListSize;
//المنشئ
JListDemo2 العامة () {
contentPane = this.getContentPane();
jp = new JPanel(new GridLayout());
setJListFont();
setJListFontSize();
contentPane.add(jp);
this.setTitle("JListDemo");
this.setSize(240, 200);
this.setLocation(400, 300);
this.setVisible(true);
} // نهاية JListDemo2
مجموعة الفراغ العامةJListFont() {
GraphicsEnvironment ge = GraphicsEnvironment
.getLocalGraphicsEnvironment();
Final String FontName[] = ge.getAvailableFontFamilyNames(); // احصل على الخط المحلي للنظام
jListFont = new JList(fontName);
// قم بتعيين الحد المعنون لكائن jList1
jListFont.setBorder(BorderFactory.createTitledBorder("خط النظام: "));
// اضبط وضع التحديد لكائن jList1 على تحديد واحد
jListFont.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jListFont.setVisibleRowCount(3);
jListFont.setFixedCellWidth(120);
jListFont.setFixedCellHeight(20);
JScrollPane jScrollPane1 = new JScrollPane(jListFont);
jp.add(jScrollPane1);
}
مجموعة الفراغ العامJListFontSize() {
حجم الخط النهائي للسلسلة[] = { "8"، "9"، "10"، "12"، "14"، "15"، "16"،
"18"، "20"، "21"، "22"، "24"، "26"، "28"، "30"، "36"، "48"،
"54"، "72"، "89" };
// أنشئ مربع قائمة بأحجام الخطوط listSize
jListSize = new JList(fontSize);
jListSize.setBorder(BorderFactory.createTitledBorder("حجم الخط: "));
// اضبط وضع التحديد لكائن jList2 للضغط باستمرار على [Ctrl] لتحديدات متعددة
jListSize
.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
jListSize.setVisibleRowCount(3);
jListSize.setFixedCellWidth(120);
jListSize.setFixedCellHeight(20);
JScrollPane jScrollPane2 = new JScrollPane(jListSize);
jp.add(jScrollPane2);
}
public static void main(String[] args) {
اختبار JListDemo2 = جديد JListDemo2();
}
}
رسم تخطيطي لتشغيل البرنامج:
4.javax.swing
فئة JColorChooser:
يوفر JColorChooser (مربع حوار اختيار اللون) لوحة تحكم تسمح للمستخدم بمعالجة الألوان وتحديدها.
منشئ JColorChooser:
JColorChooser(): إنشاء كائن JColorChooer، اللون الافتراضي هو الأبيض.
JColorChooser (اللون الأولي): قم بإنشاء كائن JColorChooer وقم بتعيين اللون الأولي.
JColorChooser(ColorSelectionModel modal): إنشاء كائن JColorChooser باستخدام ColorSelectionModel.
الطريقة الأكثر شيوعًا لاستخدام JColorChooser هي استخدام الطريقة الثابتة showDialog() لـ JColorChooser، وهذا يعني أنه في معظم الحالات، لن نقوم بإنشاء كائن JColorChooser جديد، ولكننا نستخدم الطريقة الثابتة مباشرة (showDialog()) لـ JColorChooser. لإخراج مربع حوار اختيار اللون، باستخدام هذه الطريقة، يمكننا أيضًا الحصول على اللون الذي حدده المستخدم. إذا لم يختر المستخدم، فسيتم إرجاع قيمة فارغة.
رمز الحالة 1 البسيط لمربع حوار اختيار اللون:
انسخ رمز الكود كما يلي:
الطبقة العامة JColorChooserDemo {
public static void main(String[] args) {
إطار JFrame = جديد JFrame("JColorChooserDemo");
لوحة MyPanel = new MyPanel();
frame.getContentPane().add(panel);
frame.pack();
frame.setLocation(300, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
فئة MyPanel تمتد JPanel تنفذ ActionListener {
serialVersionUID النهائي الطويل الخاص الثابت = 1L؛
زر JButton خاص، rgb، الأحمر، الأخضر، الأزرق؛
لون خاص اللون = لون جديد (255، 51، 150)؛
عام MyPanel () {
Button = new JButton("الحصول على اللون");
rgb = new JButton("RGB: ");
red = new JButton("الأحمر:");
الأخضر = جديد JButton("الأخضر:");
الأزرق = جديد JButton("الأزرق:");
Button.addActionListener(this);
setPreferredSize(new Dimension(550, 250));
setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
setBackground(color);
إضافة (زر)؛
إضافة (رغب)؛
إضافة (أحمر)؛
إضافة (أخضر)؛
إضافة (أزرق)؛
}
إجراء باطل عام (ActionEvent e) {
color = JColorChooser.showDialog(this, "Choose Color", color);
إذا (اللون! = فارغ) {
setBackground(color);
Button.setText("الحصول على مرة أخرى");
rgb.setText("RGB: " + color.getRGB());
red.setText("الأحمر:" + color.getRed());
green.setText("أخضر:" + color.getGreen());
blue.setText("الأزرق:" + color.getBlue());
}
}
}
مخطط نتيجة التشغيل هو كما يلي:
هناك طريقة أخرى شائعة لاستخدام JColorChooser وهي استخدام الطريقة الثابتة createDialog () بعد استخدام هذه الطريقة الثابتة، سوف تحصل على كائن JDialog، يمكننا استخدام كائن JDialog هذا لإجراء المزيد من الإعدادات لمربع حوار اختيار اللون. لاستخدام هذه الطريقة، يجب عليك التعاون مع كائن JColorChooser، أي أنه يجب عليك إنشاء كائن JColorChooser جديد. يقدم المثال التالي أبسط وأكثر عملية JColorChooser. بعد تحديد اللون، يمكنك تغيير لون الخلفية على JLabel.
رمز الحالة 2 البسيط لمربع حوار اختيار اللون:
انسخ رمز الكود كما يلي:
import java.awt.*;
import java.awt.event.*;
استيراد javax.swing.*;
الطبقة العامة ColorChooserDemo1 تمتد MouseAdapter {
JFrame f = null;
تسمية JLabel = فارغة؛
JLabel label1 = null;
JLabel label2 = null;
مستطيل rec1 = null;
مستطيل rec2 = null;
عام ColorChooserDemo1() {
f = new JFrame("مثال ColorChooser");
محتوى الحاوية = f.getContentPane();
contentPane.addMouseListener(this);
label = new JLabel(" ", JLabel.CENTER);
label.setPreferredSize(new Dimension(300, 20));
لوحة JPanel = new JPanel();
Panel.setLayout(new GridLayout(1, 2));
label1 = new JLabel("Left Label"، JLabel.CENTER);
label1.setBackground(Color.red);
label1.setForeground(Color.black);
label1.setOpaque(true);
label1.setBounds(0, 0, 150, 150);
Panel.add(label1);
label2 = new JLabel("Right Label", JLabel.CENTER);
label2.setBackground(Color.green);
label2.setForeground(Color.black);
label2.setOpaque(true);
label2.setBounds(150, 0, 150, 150);
Panel.add(label2);
rec1 = label1.getBounds();
rec2 = label2.getBounds();
contentPane.add(panel, BorderLayout.CENTER);
contentPane.add(label, BorderLayout.SOUTH);
f.setSize(new Dimension(300, 150));
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
نافذة فارغة عامة (WindowEvent e) {
System.exit(0);
}
});
}
// قم بتنفيذ طريقتي mousePressed() و mouseClicked() في MouseAdapter. عند الضغط على الماوس، يمكنك معرفة الموضع الحالي لمؤشر الماوس عند الضغط المستمر على الماوس
// مرتين، إذا كان المؤشر في التسمية، سيظهر مربع حوار تحديد اللون، ويمكن للمستخدم اختيار أي لون لتغيير لون التسمية.
public void mousePressed(MouseEvent e) {
label.setText("إحداثيات الماوس الحالية (X,Y) هي: (" + e.getX() + ""، + e.getY() + ")");
}
public void mouseClicked(MouseEvent e) {
نقطة النقطة = e.getPoint();
إذا (e.getClickCount() == 2) {
إذا (rec1.contains(نقطة)) {
/*
* استخدم الطريقة الثابتة showDialog() لـ JColorChooser لإخراج مربع حوار تحديد اللون
*، المعلمات الثلاثة في showDialog() هي: المكون الأصلي لمربع الحوار، وعنوان مربع حوار اختيار اللون
*، مع اللون الافتراضي لمربع الحوار بعد أن يحدد المستخدم اللون، اضغط على زر "موافق" للعودة
* كائن اللون، إذا تم الضغط على زر "إلغاء"، يتم إرجاع القيمة الخالية.
*/
لون اللون = JColorChooser.showDialog(f,
"تغيير لون الملصق 1"، اللون.أبيض)؛
if (color != null) // إذا كانت القيمة فارغة، فهذا يعني أن المستخدم ضغط على زر "إلغاء الأمر".
label1.setBackground(color);
}
إذا (rec2.contains(نقطة)) {
لون اللون = JColorChooser.showDialog(f,
"تغيير لون الملصق 2"، اللون. أصفر)؛
if (color != null) // إذا كانت القيمة فارغة، فهذا يعني أن المستخدم ضغط على زر "إلغاء الأمر".
label2.setBackground(color);
}
}
}
public static void main(String[] arg) {
new ColorChooserDemo1();
}
}