كيفية إنشاء قائمة منسدلة في Java Swing مع اختيار العناصر المتعددة؟

StackOverflow https://stackoverflow.com/questions/2860250

سؤال

أنا على علم 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. تناسب واجهة المستخدم الرسومية بعد ذلك الغرض تمامًا (على الأقل بالنسبة لي) ، إنه مجرد التعامل مع العنصر الذي يخاطر بأن يصبح مزعجًا بعض الشيء.

(أخيرًا هناك ، حددت بعض منطق البت على العناصر ، ثم قد تقيد نفسي على التعامل مع نوع واحد فقط من الأحداث)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top