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.Color;
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.awt.EventQueue;
|
import java.awt.EventQueue;
|
||||||
|
import java.awt.Graphics;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.event.FocusAdapter;
|
import java.awt.event.FocusAdapter;
|
||||||
import java.awt.event.FocusEvent;
|
import java.awt.event.FocusEvent;
|
||||||
@ -196,7 +197,16 @@ public class SearchableAndCategorizableComboBox<E, T> extends JComboBox<T> {
|
|||||||
|
|
||||||
if (itemsForGroup != null) {
|
if (itemsForGroup != null) {
|
||||||
for (T item : itemsForGroup) {
|
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 -> {
|
itemMenu.addActionListener(e -> {
|
||||||
setSelectedItem(item);
|
setSelectedItem(item);
|
||||||
});
|
});
|
||||||
@ -240,6 +250,11 @@ public class SearchableAndCategorizableComboBox<E, T> extends JComboBox<T> {
|
|||||||
T item = (T) value;
|
T item = (T) value;
|
||||||
String itemName = item.toString();
|
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())) {
|
if (itemName.toLowerCase().contains(searchFieldSearch.getText().toLowerCase())) {
|
||||||
// Use HTML to underline matching text
|
// Use HTML to underline matching text
|
||||||
itemName = itemName.replaceAll("(?i)(" + searchFieldSearch.getText() + ")", "<u>$1</u>");
|
itemName = itemName.replaceAll("(?i)(" + searchFieldSearch.getText() + ")", "<u>$1</u>");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user