简体   繁体   中英

How to add rows in JTable at runtime in Swing

Currently, i am trying to add rows to a JTable in java swing and getting the following output. Null getting appended with the first cell showing java.lang.someerror

This is the output with cells showing error

, I cant able to append strings in the table. Getting an error like

cannot convert string to object

Need to insert to the table (String Object[][]) which is in the code follows as

  class SimpleTableExample
                extends     JFrame
 {
// Instance attributes used in this example
private JPanel      topPanel;
private JTable table;
private JScrollPane scrollPane;

// Constructor of main frame
public SimpleTableExample()
{
    // Set the frame characteristics
    setTitle( "Simple Table Application" );
    setSize( 1100, 150 );
    setBackground( Color.gray );

    // Create a panel to hold all other components
    topPanel = new JPanel();
    topPanel.setLayout( new BorderLayout() );
    getContentPane().add( topPanel );

    // Create columns names
    String columnNames[] = { " Date & Time", "VRP", "VYP", "VBP", "CRP","CYP","CBP","PO","BM","ARM","WT","RH","CNT","BCC","W","F","L","status"};

    // Create some data
    String dataValues[][] =
    {
            { null, null, null , null, null, null, null, null , null, null,null, null, null , null, null, null, null, null },
            { null, null, null , null, null, null, null, null , null, null,null, null, null , null, null, null, null, null },
            { null, null, null , null, null, null, null, null , null, null,null, null, null , null, null, null, null, null },
            { null, null, null , null, null, null, null, null , null, null,null, null, null , null, null, null, null, null },
            { null, null, null , null, null, null, null, null , null, null,null, null, null , null, null, null, null, null },
            { null, null, null , null, null, null, null, null , null, null,null, null, null , null, null, null, null, null },

    };

        String Object[][] = {{"85", "85","85","85","85","85","85","85","85","85","85","85","85","85","85","85","85","85"}};
        DefaultTableModel dm = new DefaultTableModel(0,0);
        dm.setColumnIdentifiers(columnNames);

        // Create a new table instance
        table = new JTable(dm);

        TableColumn column = null;
        for(int i =0; i<18; i++){
            column =  table.getColumnModel().getColumn(i);
            if(i==0)
            {
                column.setPreferredWidth(100);
            }
            else{
                column.setPreferredWidth(40);
            }
        }
        table.setModel(dm);

       /* i have tried to use vector for insertion didn't work  
        Vector <Object> data = new Vector <Object>();
        data.add(null);
        data.add(null);
        dm.addRow(data); */

((DefaultTableModel) ((JTable) table).getModel()).addRow(new Object[]{});  //for this code row got inserted with some error displaying in first cell

// Add the table to a scrolling pane
scrollPane = new JScrollPane(table);
topPanel.add( scrollPane, BorderLayout.CENTER );


  }

    // Main entry point for this example
    public static void main( String args[] )
    {
        // Create an instance of the test application
        SimpleTableExample mainFrame    = new SimpleTableExample();
        mainFrame.setVisible( true );
    }
}


       ((DefaultTableModel) ((JTable) table).getModel()).addRow(new Object[]{"85","85","85","85","85","85","85","85","85","85","85","85","85","85","85","85","85","85"});

If I use this, getting this error...

  • Type mismatch: cannot convert from String to Object

Kindly anyone help with this issue

The constructor is asking you for an Object array, which is declared with additional braces. I suspect that you are using a String[] instead of a Object[][] :

Object[][] defaultValues={
            {"content1"},
            {"content2"}
        };

It has worked for me when using the constructor new DefaultTableModel(Object[][] data,Object[] columnames);.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM