كيفية إنشاء قائمة منسدلة في Java Swing مع اختيار العناصر المتعددة؟
-
30-09-2019 - |
سؤال
أنا على علم JList
و JComboBox
. أحتاج إلى وظائف Sold Box المنسدلة مع وظائف اختيار متعددة JList
يوفر.
وذلك لأن محتويات القائمة ضخمة جدًا بحيث لا يمكن عرضها باستخدام قائمة بسيطة. أحتاج أيضًا إلى تحديد عناصر متعددة ، وإلا كنت سأرضي JComboBox
.
أي اقتراحات؟
المحلول
عند استخدام Multi-Select ، من الأفضل استخدام قائمة من مربع التحرير والسرد. مع استمرار استعارات واجهة المستخدم الرسومية ، يتوقع الناس أن يكون مربع التحرير والسرد فرديًا ، في حين يمكن أن تكون القوائم أيضًا.
محتويات القائمة ضخمة جدًا بحيث لا يمكن عرضها باستخدام قائمة بسيطة
ضع ال JList
في JScrollPane
. تستطيع الاتصال setVisiblerOwCount (int) على ال JList
لتحديد عدد الصفوف في كل مرة يجب عرضها.
نصائح أخرى
يمكنك عمل عارض خلايا مخصص لـ Combobox وإضافة مربعات الاختيار إلى تلك المكونات ، حتى تتمكن من التحقق منها وإلغاء تحديدها. عليك أن تصنع شيئًا كهذا:
public class MyComboBoxRenderer implements ListCellRenderer {
private String[] items;
private boolean[] selected;
public MyComboBoxRenderer(String[] items){
this.items = items;
this.selected = new boolean[items.lenght];
}
public Component getListCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int index) {
// Create here a JLabel with the text
// Create here a JCheckBox
// Add them to a layoutmanager
return this;
}
public void setSelected(int i, boolean flag)
{
this.selected[i] = flag;
}
}
إذا كانت بياناتك تحتوي على طابع هرمي ، ففكر في NetBeans Outline
مكون ، ناقش في الإعلان عن طاولة شجرة التأرجح الجديدة وفي هذا إجابه. ها هي نسخة التطوير الحالية من API.
لتحقيق الوظيفة الموصوفة ، قررت أخيرًا "إساءة" JMenuBar
وأضف إليه عدة JCheckBoxMenuItems
. تناسب واجهة المستخدم الرسومية بعد ذلك الغرض تمامًا (على الأقل بالنسبة لي) ، إنه مجرد التعامل مع العنصر الذي يخاطر بأن يصبح مزعجًا بعض الشيء.
(أخيرًا هناك ، حددت بعض منطق البت على العناصر ، ثم قد تقيد نفسي على التعامل مع نوع واحد فقط من الأحداث)