From 15b66b44c3beaf64d58e39870b62eee5a48ba2b3 Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sun, 7 Dec 2025 17:30:11 -0500 Subject: Add a simple delegate renderer for JList Adds a simple delegate renderer for JLists, for cases where you just want custom text for a list item --- .../bjc/utils/gui/DelegateListCellRenderer.java | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 base/src/main/java/bjc/utils/gui/DelegateListCellRenderer.java (limited to 'base/src/main/java/bjc/utils/gui') diff --git a/base/src/main/java/bjc/utils/gui/DelegateListCellRenderer.java b/base/src/main/java/bjc/utils/gui/DelegateListCellRenderer.java new file mode 100644 index 0000000..d21fa97 --- /dev/null +++ b/base/src/main/java/bjc/utils/gui/DelegateListCellRenderer.java @@ -0,0 +1,54 @@ +package bjc.utils.gui; + +import java.awt.Component; +import java.util.function.Function; + +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.ListCellRenderer; + +/** + * Simple implementation of {@link ListCellRenderer} that uses a custom label. + * + * This renderer does the simple task of using a custom 'toString' method to display text for a given data type. + * + * @param The data-type being displayed + */ +public class DelegateListCellRenderer extends JLabel implements ListCellRenderer { + private static final long serialVersionUID = -3312631037740011026L; + + private Function toStringer; + + /** + * Create a new renderer using a given toString function + * + * @param toStringer The toString function to use + */ + public DelegateListCellRenderer(Function toStringer) { + super(); + this.toStringer = toStringer; + } + + + @Override + public Component getListCellRendererComponent(JList list, E value, int index, boolean isSelected, + boolean cellHasFocus) { + String val = toStringer.apply(value); + + setText(val); + + if (isSelected) { + setBackground(list.getSelectionBackground()); + setForeground(list.getSelectionForeground()); + } else { + setBackground(list.getBackground()); + setForeground(list.getForeground()); + } + + setEnabled(list.isEnabled()); + setFont(list.getFont()); + setOpaque(true); + return this; + } + +} -- cgit v1.2.3