@Override
        public void propertyChange(PropertyChangeEvent e) {
            JTable table = (JTable)e.getSource();
            if (table == null) {
                return;
            }
            String propertyName = e.getPropertyName();
            if (propertyName.equals("enabled")) {
                boolean isEnabled = table.isEnabled();
                setVisible(isEnabled);
                if (isEnabled) {
                    setWidth(table);
                    resetViewPosition(table);
                }
            } else if (propertyName.equals("font")) {
                setFont(table.getFont());
            } else if (propertyName.equals("rowHeight")) {
                setRowHeight(table.getRowHeight());
            } else if (propertyName.equals("model")) {
                model.setRowCount(table.getRowCount());
            } else if (propertyName.equals("unlinkedRowStatus")) {
                repaint();
            } else if (propertyName.equals("ancestor")) {
                // empty
            } else {
                // empty
            }
            validate();
        }