إضافة جداول JTable فى المكون الرسومي JComboBox
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: واجهة المستخدم الرسومية Java Swing
صفحة 1 من اصل 1 • شاطر
إضافة جداول JTable فى المكون الرسومي JComboBox
أهلا بكم
سنقوم في هذا المقال بتخصيص المكون #JComboBox بحيث تقبل عناصره الجداول (#JTable) بدلاً من النص البسيط وذلك كما فى الشكل التالى :

الخطوات :
1_فى هذه الخطوة سنجعل #JComboBox يتكون من عناصر ..كل عنصر سيكون عبارة عن جدول وعنوان الجدول ، ولهذا يجب علينا إنشاء فئة خاصة بنا وليكن باسم (ItemCombo.java) على النحو التالي:
2_الآن يجب أن نعلم #JComboBox كيفية تقديم كل عنصر من عناصر القائمة أعلاه ، لهذا سنقوم بانشاء الفئة ItemComboRenderer.java نضيف الكود التالي:
3_نفتح نموذج #JFrame الخاص بنا في وضع التصميم ونضيف #JComboBox بأبعاد 320 × 30 كما فى الشكل التالى :

4_نفتح JFrame في وضع الكود وفي مُنشئ الفئة نعلن عن #DefaultComboBoxModel لبيانات combobox على النحو التالى :
بعد ذلك ، نضيف عنصرًا أولًا كما يلي ، نقوم بإنشاء مثيل جديد لمكون ItemCombo الخاص بنا ، ونضيف اسمًا للجدول و DefaultTableModel لبيانات الجدول.
أخيرًا نضيف هذا item1 إلى نموذج combobox
الإجراء أعلاه لإضافة المزيد من العناصر .
5_أخيرًا ، نضيف النموذج وجهاز العارض إلى combobox كما يلي:
الكود الكامل للخطوتين 4 و 5 على النحو التالى :
و النتيجة :
تحياتى لكم
سنقوم في هذا المقال بتخصيص المكون #JComboBox بحيث تقبل عناصره الجداول (#JTable) بدلاً من النص البسيط وذلك كما فى الشكل التالى :

الخطوات :
1_فى هذه الخطوة سنجعل #JComboBox يتكون من عناصر ..كل عنصر سيكون عبارة عن جدول وعنوان الجدول ، ولهذا يجب علينا إنشاء فئة خاصة بنا وليكن باسم (ItemCombo.java) على النحو التالي:
- الكود:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
public class ItemCombo extends JPanel {
private JTable tabla;
private JLabel tablaNombre;
public ItemCombo() {
super();
init();
}
private void init() {
tabla = new JTable();
tablaNombre = new JLabel();
// أبعاد المكون
setPreferredSize(new Dimension(300, 100));
JScrollPane scroll = new JScrollPane();
scroll.setViewportView(tabla);
//إنشاء حاوية
JPanel jPanel1 = new JPanel();
jPanel1.setBackground(new Color(0, 0, 200));
jPanel1.setPreferredSize(new Dimension(0, 16));
jPanel1.setLayout(new GridBagLayout());
//لون النص
tablaNombre.setForeground(new Color(255, 255, 255));
jPanel1.add(tablaNombre);
//تخطيط للمكون
setLayout(new BorderLayout());
//يتم إضافة مكونات العنوان والجدول
add(jPanel1, BorderLayout.NORTH);
add(scroll, BorderLayout.CENTER);
}
public String getNombreTabla() {
return tablaNombre.getText();
}
public void setNombreTabla(String nombreTabla) {
tablaNombre.setText(nombreTabla);
}
public DefaultTableModel getTablaModel() {
return (DefaultTableModel) tabla.getModel();
}
public void setTablaModel(DefaultTableModel tablaModel) {
this.tabla.setModel(tablaModel);
}
}
2_الآن يجب أن نعلم #JComboBox كيفية تقديم كل عنصر من عناصر القائمة أعلاه ، لهذا سنقوم بانشاء الفئة ItemComboRenderer.java نضيف الكود التالي:
- الكود:
public class ItemComboRenderer extends ItemCombo implements ListCellRenderer{
@Override
public Component getListCellRendererComponent(JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus)
{
if (value != null) {// اذا كان هناك عنصر
setTablaModel(((ItemCombo) value).getTablaModel());
setNombreTabla(((ItemCombo) value).getNombreTabla());
// إذا تم تحديد العنصر ، فلن يعرض الجدول
// لكن فقط اسم الجدول
if (index == -1) {
JLabel label = new JLabel(getNombreTabla());
return label;
}
/ / عرض الجدول بالكامل
return this;
} else {//يتم عرض تسمية فارغة
JLabel label = new JLabel();
return label;
}
}
}
3_نفتح نموذج #JFrame الخاص بنا في وضع التصميم ونضيف #JComboBox بأبعاد 320 × 30 كما فى الشكل التالى :

4_نفتح JFrame في وضع الكود وفي مُنشئ الفئة نعلن عن #DefaultComboBoxModel لبيانات combobox على النحو التالى :
- الكود:
DefaultComboBoxModel model = new DefaultComboBoxModel();
بعد ذلك ، نضيف عنصرًا أولًا كما يلي ، نقوم بإنشاء مثيل جديد لمكون ItemCombo الخاص بنا ، ونضيف اسمًا للجدول و DefaultTableModel لبيانات الجدول.
أخيرًا نضيف هذا item1 إلى نموذج combobox
- الكود:
/**
* Item #1
*/
ItemCombo item1 = new ItemCombo();
item1.setNombreTabla("Tabla de Productos");
DefaultTableModel tablemodel1 = new DefaultTableModel(new Object[][]{
{"Mesa de Roble", "100 Uds.", "200 $us."},
{"Estante de Pino", "24 Uds.", "69 $us"},
{"Cabecera de cama", "3 Uds.", "1.200 $us"}
},
new Object[]{"Nombre", "Cantidad", "Precio"});
item1.setTablaModel(tablemodel1);
model.addElement(item1);
الإجراء أعلاه لإضافة المزيد من العناصر .
5_أخيرًا ، نضيف النموذج وجهاز العارض إلى combobox كما يلي:
- الكود:
jComboBox1.setModel(model);
jComboBox1.setRenderer(new ItemComboRenderer());
الكود الكامل للخطوتين 4 و 5 على النحو التالى :
- الكود:
//Model para el ComboBox
DefaultComboBoxModel model = new DefaultComboBoxModel();
/**
* Item #1
*/
ItemCombo item1 = new ItemCombo();
item1.setNombreTabla("Tabla de Productos");
DefaultTableModel tablemodel1 = new DefaultTableModel(new Object[][]{
{"Mesa de Roble", "100 Uds.", "200 $us."},
{"Estante de Pino", "24 Uds.", "69 $us"},
{"Cabecera de cama", "3 Uds.", "1.200 $us"}
},
new Object[]{"Nombre", "Cantidad", "Precio"});
item1.setTablaModel(tablemodel1);
model.addElement(item1);
/**
* Item #2
*/
ItemCombo item2 = new ItemCombo();
item2.setNombreTabla("Tabla de Servicios");
DefaultTableModel tablemodel2 = new DefaultTableModel(new Object[][]{
{"Medicina Interna", "09:00 a 12:00", "100 $us."},
{"Nutrición", "14:00 a 18:00", "40 $us"},
{"Traumatologia", "10:00 a 13:00", "77 $us"}
},
new Object[]{"Nombre", "Horario", "Consulta"});
item2.setTablaModel(tablemodel2);
model.addElement(item2);
jComboBox1.setModel(model);
jComboBox1.setRenderer(new ItemComboRenderer());
و النتيجة :

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ

NEXT- الادارة
- تاريخ التسجيل : 18/02/2011
المساهمات : 446
النقاط : 200660
التقيم : 28
الدولة :
الجنس :
رد: إضافة جداول JTable فى المكون الرسومي JComboBox
كعادتك دائما تاتينا بافكار اكثر من رائعة شكرا جزيلا @NEXT
زهراء- ........
- تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة :
الجنس :
| |
منتدى مصر التقني :: قسم لغات البرمجة Programming languages :: لغة الجافا Java :: واجهة المستخدم الرسومية Java Swing
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
» شركة تنظيف مسابح بالرياض
» "بروتين بعد التكميم فوائد البروتين بعد التكميم بروتين بودر بعد التكميم"
» اشهر نسخ واتساب بلس 2023 whatsapp plus
» متجر مجوهرات دير: إشراقة الذهب الخالص
» صراف صينى مقاس57*40
» فلاي تورز: اكتشف عالمًا من السفر والسياحة المثيرة
» متجر yallaa kids : مصدر الإبداع والتعلم للأطفال
» افضل تمويل
» "اقوي عروض المساج "