как убрать Jbutton со стола - PullRequest
0 голосов
/ 12 июля 2010

У меня есть таблица со столбцом в виде JButton.

Я установил рендерер следующим образом

TableColumn col = colModel.getColumn(3);
    col.setCellRenderer(new MyRenderer("Del"));
    col.setCellEditor(new MultiTradeCellEditor(new JCheckBox()));

Классы рендерера и cellEditor:

class MyRenderer extends JButton implements TableCellRenderer{

    public MyRenderer(String text){
        super(text);
    }
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        return this;
    }

}   


}

Класс CellEditor

class MultiTradeCellEditor extends DefaultCellEditor{

    protected JButton button;

    public MultiTradeCellEditor(JCheckBox checkBox) {
        super(checkBox);
        button = new JButton("Del");
        button.setOpaque(true);
        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {    
            selectionList.getList().remove(table.getSelectedRow());
                table.repaint();
                                }
        });

    }

}

Когда я удаляю строку из таблицы. я делаю model.remove (table.getSelectedRow ()). Удаляет строку, кроме JButton. Я предполагаю, что кнопка является частью компонента Renderer, поэтому она не удаляется. Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 14 июля 2010

Пример Столбец кнопки столбца предоставляет средства визуализации и редактор для кнопки, а также пример действия для удаления строки из таблицы.

0 голосов
/ 13 июля 2010

Одд.Может быть, кеширование?

Попробуйте вернуть пустую метку, когда значение отсутствует?

class MyRenderer extends JComponent implements TableCellRenderer{
    private String text;
    public MyRenderer(String text){
        this.text = text;
    }
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        if (value)
            return new JButton(text);
        else
            return new JLabel();
    }

}   


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...