java - JTable with different JComboBox-es for each row -


i created jtable contains information employees. in jtable added column called "qualifications". column represented jcombobox (different content @ each row). instance:

row 1 |  jcombobox(){"programmer","web"} row 2 |  jcombobox(){"writer","editor"} 

the jcombobox content taken list<string> employees[row].getqualification().

the problem selected item in row 1 , row 2 "programmer", "programmer" should not appear in row 2. when click on jcombobox, correct list appears, i.e. row 2 - {"writer","editor"}.

    tablecolumn column = table.getcolumnmodel().getcolumn(5);     column.setcellrenderer(getrenderer());      private tablecellrenderer getrenderer() {     return new tablecellrenderer() {          private jcombobox<string> box = new jcombobox<string>();         @override         public component gettablecellrenderercomponent(jtable table, object value,                 boolean isselected, boolean hasfocus, int row, int column) {                         (string q : employees[row].getqualification())                 box.additem(q);             box.setbackground(isselected ? table.getselectionbackground() : table.getbackground());             box.setforeground(isselected ? table.getselectionforeground() : table.getforeground());             return box;            }         };     } 

override getcelleditor() method of jtable. like:

import java.awt.*; import java.awt.event.*; import java.util.list; import java.util.arraylist; import javax.swing.*; import javax.swing.border.*; import javax.swing.table.*;  public class tablecomboboxbyrow extends jpanel {     list<tablecelleditor> editors = new arraylist<tablecelleditor>(3);      public tablecomboboxbyrow()     {         setlayout( new borderlayout() );          // create editors used each row          string[] items1 = { "red", "blue", "green" };         jcombobox<string> combobox1 = new jcombobox<string>( items1 );         defaultcelleditor dce1 = new defaultcelleditor( combobox1 );         editors.add( dce1 );          string[] items2 = { "circle", "square", "triangle" };         jcombobox<string> combobox2 = new jcombobox<string>( items2 );         defaultcelleditor dce2 = new defaultcelleditor( combobox2 );         editors.add( dce2 );          string[] items3 = { "apple", "orange", "banana" };         jcombobox<string> combobox3 = new jcombobox<string>( items3 );         defaultcelleditor dce3 = new defaultcelleditor( combobox3 );         editors.add( dce3 );          //  create table default data          object[][] data =         {             {"color", "red"},             {"shape", "square"},             {"fruit", "banana"},             {"plain", "text"}         };         string[] columnnames = {"type","value"};         defaulttablemodel model = new defaulttablemodel(data, columnnames);         jtable table = new jtable(model)         {             //  determine editor used row             public tablecelleditor getcelleditor(int row, int column)             {                 int modelcolumn = convertcolumnindextomodel( column );                  if (modelcolumn == 1 && row < 3)                     return editors.get(row);                 else                     return super.getcelleditor(row, column);             }         };          jscrollpane scrollpane = new jscrollpane( table );         add( scrollpane );     }      private static void createandshowui()     {         jframe frame = new jframe("table combo box row");         frame.setdefaultcloseoperation(jframe.exit_on_close);         frame.add( new tablecomboboxbyrow() );         frame.setsize(200, 200);         frame.setlocationbyplatform( true );         frame.setvisible( true );     }      public static void main(string[] args)     {         eventqueue.invokelater(new runnable()         {             public void run()             {                 createandshowui();             }         });     } } 

Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -