كيفية تغيير لون الخلفية للعنصر المحدد في JList بشكل ديناميكي

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

  •  21-09-2019
  •  | 
  •  

سؤال

كيف يمكنني تغيير لون الخلفية للعنصر الذي تم تحديده في JLILL بشكل ديناميكي؟

هل كانت مفيدة؟

المحلول

يجب أن يساعد شيء مثل ما يلي كنقطة انطلاق:

public class SelectedListCellRenderer extends DefaultListCellRenderer {
     @Override
     public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
         Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
         if (isSelected) {
             c.setBackground(Color.RED);
         }
         return c;
     }
}
// During the JList initialisation...
jlist1.setCellRenderer(new SelectedListCellRenderer());

نصائح أخرى

تتمثل إحدى الطرق الأسهل في الانتقال إلى وضع التصميم في Eclipse ، وفي خصائص قائمة J -List ، انقر على الزر الذي يحتوي على سهمان صغيران مع سهم أصفر كبير بينهما لفتح "إظهار الخصائص المتقدمة". ثم قم بالتمرير لأسفل وتغيير اللون حيث يقول "SelectionBackground" وتغيير اللون هناك (من المحتمل أن يكون رماديًا ، لكنه سيظل يتغير). الآن ، عندما تقوم بتشغيل برنامجك ، مهما اختارت ، ستكون الخلفية هذا اللون.

 jList1.setSelectedIndex(currentLine);
 jList1.setSelectionBackground(Color.red);

ما عليك سوى تعيين فهرس محدد لجميع العناصر التي تريد تلوينها في حلقة وتغيير اللون وفقًا لذلك!

إذا كنت أفهمك بوضوح ، فابحث في javax.swing.ListCellRenderer. تحتاج إلى إعادة تنفيذها أو تمديدها javax.swing.DefaultListCellRenderer وتخصيص getListCellRendererComponent طريقة.

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