Add checkmark for the currently selected item
This commit is contained in:
parent
481d9a7355
commit
98da7340fe
@ -21,6 +21,7 @@ import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.EventQueue;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Point;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
@ -196,7 +197,16 @@ public class SearchableAndCategorizableComboBox<E, T> extends JComboBox<T> {
|
||||
|
||||
if (itemsForGroup != null) {
|
||||
for (T item : itemsForGroup) {
|
||||
JMenuItem itemMenu = new JMenuItem(item.toString());
|
||||
JMenuItem itemMenu = new JMenuItem(item.toString()) {
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
// If the item is currently selected, draw a checkmark before it
|
||||
if (item.equals(SearchableAndCategorizableComboBox.this.getSelectedItem())) {
|
||||
g.drawString("\u2713 ", 5, getHeight() - 5);
|
||||
}
|
||||
}
|
||||
};
|
||||
itemMenu.addActionListener(e -> {
|
||||
setSelectedItem(item);
|
||||
});
|
||||
@ -240,6 +250,11 @@ public class SearchableAndCategorizableComboBox<E, T> extends JComboBox<T> {
|
||||
T item = (T) value;
|
||||
String itemName = item.toString();
|
||||
|
||||
// If the item is currently selected, draw a checkmark before it
|
||||
if (item.equals(getSelectedItem())) {
|
||||
itemName = "\u2713 " + itemName;
|
||||
}
|
||||
|
||||
if (itemName.toLowerCase().contains(searchFieldSearch.getText().toLowerCase())) {
|
||||
// Use HTML to underline matching text
|
||||
itemName = itemName.replaceAll("(?i)(" + searchFieldSearch.getText() + ")", "<u>$1</u>");
|
||||
|
Loading…
x
Reference in New Issue
Block a user