كيفية تغيير لون الخلفية للعنصر المحدد في JList بشكل ديناميكي
سؤال
كيف يمكنني تغيير لون الخلفية للعنصر الذي تم تحديده في 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
طريقة.