user2713275
user2713275

Reputation:

Refresh table's row (Not row's value) on frame?

Sorry for being so amateur, I created a 'button' on a frame so that when we click the button for the first time, A ROW will be inserted on the frame. But ALL I WANT is that when I click the button THE SECOND TIME, the ROW IS REFRESHED (Not creating a new row!), I know that '.addRow(new Object[] { "", "", ""});' is the cause , because the object is created every time I click the button, so how could I possibly modify the code? Thanks for your attention.

*My weak brain said that if only I can empty 'model' object (or destroying the object, something like that), then I would find the solution, but how I could possibly empty/destroy that 'model' object?

import javax.swing.*;
import java.awt.event.*;
import javax.swing.table.DefaultTableModel;

public class MyTable extends JFrame {

    private JTable table;
    private DefaultTableModel model;
    private JScrollPane scroll;
    private JButton createRow;
    private String headers[] = {"a", "b", "c"};

    public MyTable() {
        createRow = new JButton("Create Row");
        model = new DefaultTableModel();
        model.setColumnIdentifiers(headers);
        table = new JTable();
        table.setModel(model);
        scroll = new JScrollPane(table);
        add(createRow, java.awt.BorderLayout.NORTH);
        add(scroll, java.awt.BorderLayout.CENTER);
        createRowOn();
    }

    // while button is pressed then create A ROW
    public void createRowOn() {
        createRow.addActionListener(
                new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (e.getSource() == createRow) {
                    model.addRow(new Object[]{"", "", ""});
                }
            }
        });
    }

    public static void main(String args[]) {
        MyTable t = new MyTable();
        t.setVisible(true);
        t.setSize(300, 300);
    }
}

Upvotes: 0

Views: 71

Answers (1)

mKorbel
mKorbel

Reputation: 109813

Sorry for being so amateur

I created a 'button' on frame so that when we click the button for the first time, A ROW will be inserted on frame. But all i want that when i click the button on THE SECOND TIME , the ROW IS REFRESHED (Not creating a new row !) , i suspect 'new Object[] { "", "", ""}' is the cause , because the object is created everytime i click the button, so how could i possibly modify the code ?

  • not clear from question (nothing is added to JTable) if you want to:

    1. add a new row (model.addRow)

    2. remove all rows (setDataVector/setRowCount)

    3. reset value in JTables view (setValueAt)

    but everything is described in Oracle tutorial, rest in the DefaultTableModel

Upvotes: 5

Related Questions