Home Upgrade Search Memberlist Extras Hacker Tools Award Goals Help Wiki Contact

Java 

JTable losing TableModelListener

Whilst using JTable::setAutoCreateRowSorter to sort each column, my JTable loses it's TableModelListener so once I've sorted it by clicking on a column it changes the table model, which in turn also removes the model listener. How can I avoid this?
Can you please share your code?
(Apr 1, 2017 05:39 PM)Weco Wrote:  Can you please share your code?

Code
package epicurus.model.players;

import java.awt.BorderLayout;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;

public class PlayerEditor extends JFrame {

    private static final long serialVersionUID = -272486423825973828L;
    private JPanel contentPane;
    private JTable table;
    private DefaultTableModel tableModel;
    private String player;
    private ArrayList<Field> fields;

    @SuppressWarnings("serial")
    public PlayerEditor(String player) {
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setBounds(100, 100, 602, 371);
        setTitle(this.player = player);

        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BorderLayout(0, 0));
        JScrollPane scrollPane = new JScrollPane();
        contentPane.add(scrollPane, BorderLayout.CENTER);
        table = new JTable();
                table.setAutoCreateRowSorter(true);
        table.getTableHeader().setReorderingAllowed(false);
        table.getTableHeader().setResizingAllowed(false);
        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        table.setModel(new DefaultTableModel(null, new String[] { "Type", "Name", "Value" }) {
            public boolean isCellEditable(int row, int column) {
                return column == 2;
            }
        });
        table.getColumnModel().getColumn(2).setPreferredWidth(224);
        scrollPane.setViewportView(table);
        this.tableModel = (DefaultTableModel) table.getModel();
        init();
        table.getModel().addTableModelListener((e) -> {
            save();
        });
    }
    
    
    //sensitive code
}


Possibly Related Threads...
Thread / Author Replies Views Last Post
[Java] by HeulenSep 7, 2015 06:32 AM 7 229 Sep 7, 2015 06:32 AM
Last Post: eSp0rt
[Java] by SunnyAkumaApr 13, 2015 10:18 PM 2 110 Apr 13, 2015 10:18 PM
Last Post: SunnyAkuma
[Java] by SunnyAkumaApr 12, 2015 09:19 AM 5 118 Apr 12, 2015 09:19 AM
Last Post: WildeThing