Заполнение данных в JTable в netbeans - PullRequest
1 голос
/ 07 сентября 2011

Я хочу изменить данные по умолчанию в JTable во время выполнения.Я использую NetBeans.Я пробовал решение, приведенное здесь добавление данных в JTable при работе с netbeans

jTable1.getModel (). SetValueAt (строка, столбец, значение);

, но это даетэта ошибка: enter image description here

Ответы [ 2 ]

4 голосов
/ 07 сентября 2011

Если вы хотите изменить его во время выполнения, вам нужно решить , когда вы хотите его изменить, и добавить код в соответствующий метод / событие.На самом деле в вашем определении класса есть вызов метода, который не является допустимым кодом.

Например,

public void setTableModel(){
    displayTable.getModel().setValueAt(2,4,300);
}

И затем вызвать setTableModel () в соответствующее время.

1 голос
/ 07 сентября 2011

потому что вы написали эту строку кода из текущего класса, вы должны обернуть эти строки кода внутри Class / void / constructor, например

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class TableProcessing extends JFrame implements TableModelListener {

    private static final long serialVersionUID = 1L;
    private JTable table;

    public TableProcessing() {
        String[] columnNames = {"Item", "Quantity", "Price", "Cost"};
        Object[][] data = {
            {"Bread", new Integer(1), new Double(1.11), new Double(1.11)},
            {"Milk", new Integer(1), new Double(2.22), new Double(2.22)},
            {"Tea", new Integer(1), new Double(3.33), new Double(3.33)},
            {"Cofee", new Integer(1), new Double(4.44), new Double(4.44)}
        };
        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        model.addTableModelListener(this);
        table = new JTable(model) {

            private static final long serialVersionUID = 1L;

            @Override
            public Class getColumnClass(int column) {
                return getValueAt(0, column).getClass();
            }

            @Override
            public boolean isCellEditable(int row, int column) {
                int modelColumn = convertColumnIndexToModel(column);
                return (modelColumn == 3) ? false : true;
            }
        };
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        JScrollPane scrollPane = new JScrollPane(table);
        getContentPane().add(scrollPane);
    }

    @Override
    public void tableChanged(TableModelEvent e) {
        if (e.getType() == TableModelEvent.UPDATE) {
            int row = e.getFirstRow();
            int column = e.getColumn();
            System.out.println(row + " : " + column);
            if (column == 1 || column == 2) {
                int quantity = ((Integer) table.getModel().getValueAt(row, 1)).intValue();
                double price = ((Double) table.getModel().getValueAt(row, 2)).doubleValue();
                Double value = new Double(quantity * price);
                table.getModel().setValueAt(value, row, 3);
            }
        }
    }

    public static void main(String[] args) {
        TableProcessing frame = new TableProcessing();
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
} 
...