swing - Java - How to show an input dialog having a dropdown list with an icon for each item? -


i using java code in swing application show input dialog has drop-down selection list user can select item list :

string[] carmodelsarray = { "honda", "mitsubishi", "toyota" }; string selectedvalue = (string)joptionpane.showinputdialog( null, "select car model list below:", "car model...",                                         joptionpane.question_message,                                          null,                                          carmodelsarray,                                         carmodelsarray[ 0 ] ); 

this code works fine, wondering if can add icon each item in selection list, drop-down selection list appear :

enter image description here

i have tried set items in list jlabel items, jlabel objects converted string values when rendered inside drop-down list if calls jlabel.tostring() method each item in list value.

so there way accomplish ?

short answer, not way you're doing it. long answer, more like...

enter image description here

import java.awt.component; import java.awt.eventqueue; import javax.swing.defaultcomboboxmodel; import javax.swing.defaultlistcellrenderer; import javax.swing.icon; import javax.swing.imageicon; import javax.swing.jcombobox; import javax.swing.jlist; import javax.swing.joptionpane; import javax.swing.uimanager; import javax.swing.unsupportedlookandfeelexception; import org.kaizen.icons.addicon; import org.kaizen.icons.deleteicon01; import org.kaizen.icons.deleteicon02;  public class test {      public static void main(string[] args) {         new test();     }      public test() {         eventqueue.invokelater(new runnable() {             @override             public void run() {                 try {                     uimanager.setlookandfeel(uimanager.getsystemlookandfeelclassname());                 } catch (classnotfoundexception | instantiationexception | illegalaccessexception | unsupportedlookandfeelexception ex) {                     ex.printstacktrace();                 }                  defaultcomboboxmodel model = new defaultcomboboxmodel<car>();                 model.addelement(new car(new addicon(16, 16), "honda"));                 model.addelement(new car(new deleteicon01(16, 16), "mitsubishi"));                 model.addelement(new car(new deleteicon02(16, 16), "tyota"));                  jcombobox cb = new jcombobox(model);                 cb.setrenderer(new carlistcellrenderer());                  int result = joptionpane.showconfirmdialog(null, cb, "select car model list below", joptionpane.ok_cancel_option, joptionpane.question_message);                 if (result == joptionpane.ok_option) {                     car car = (car) cb.getselecteditem();                 }              }         });     }      public static class carlistcellrenderer extends defaultlistcellrenderer {          @override         public component getlistcellrenderercomponent(jlist<?> list, object value, int index, boolean isselected, boolean cellhasfocus) {             system.out.println(value);             super.getlistcellrenderercomponent(list, value, index, isselected, cellhasfocus);             if (value instanceof car) {                 car car = (car) value;                 seticon(car.geticon());                 settext(car.gettext());             } else {                 seticon(null);             }             return this;         }      }      public static class car {          private icon icon;         private string text;          public car(icon icon, string text) {             this.icon = icon;             this.text = text;         }          public icon geticon() {             return icon;         }          public string gettext() {             return text;         }      }  } 

essentially, need take control on combobox , provide own custom listcellredender can provide output desire...


Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

python - NameError: name 'subprocess' is not defined -