Java – jcombobox in JTable cell

I have a JTable created using a model, which is based on an object matrix

for(int i=0; i < n ; i++) {  
    .....  
    data[i][5] = new JCombo@R_789_2419@(aux); // aux is a Vector of elements I wanna insert  
}  
table.setModel(new MyTableModel()); // MyTableModel() already takes into consideration the data[][] object

The problem is data [i] [5] = New JCombo@R_789_2419 @(aux); Will not be created in a specific cell of the JTable JCombo@R_789_2419 @Instead, paste the code into the line What can I do to solve this problem?

thank you.

Solution

One way is to override the getcelleditor () method to return the appropriate editor Here is an example to get you started:

import java.awt.*;
import java.awt.event.*;
import java.util.List;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.table.*;

public class TableCombo@R_789_2419@ByRow extends JFrame
{
    List<TableCellEditor> editors = new ArrayList<TableCellEditor>(3);

    public TableCombo@R_789_2419@ByRow()
    {
        // Create the editors to be used for each row

        String[] items1 = { "Red","Blue","Green" };
        JCombo@R_789_2419@ combo@R_789_2419@1 = new JCombo@R_789_2419@( items1 );
        DefaultCellEditor dce1 = new DefaultCellEditor( combo@R_789_2419@1 );
        editors.add( dce1 );

        String[] items2 = { "Circle","Square","Triangle" };
        JCombo@R_789_2419@ combo@R_789_2419@2 = new JCombo@R_789_2419@( items2 );
        DefaultCellEditor dce2 = new DefaultCellEditor( combo@R_789_2419@2 );
        editors.add( dce2 );

        String[] items3 = { "Apple","Orange","Banana" };
        JCombo@R_789_2419@ combo@R_789_2419@3 = new JCombo@R_789_2419@( items3 );
        DefaultCellEditor dce3 = new DefaultCellEditor( combo@R_789_2419@3 );
        editors.add( dce3 );

        //  Create the table with 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 to be used by 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);
            }
        };
        System.out.println(table.getCellEditor());

        JScrollPane scrollPane = new JScrollPane( table );
        getContentPane().add( scrollPane );
    }

    public static void main(String[] args)
    {
        TableCombo@R_789_2419@ByRow frame = new TableCombo@R_789_2419@ByRow();
        frame.setDefaultCloSEOperation( EXIT_ON_CLOSE );
        frame.pack();
        frame.setVisible(true);
    }
}

Edit: update the code to use the suggestion of trashgod

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>