Как я могу поставить JCheckbox на JTable? - PullRequest
1 голос
/ 08 апреля 2011

Как я могу поместить JCheckbox или JButton в определенную строку и столбец JTable?

Ответы [ 4 ]

1 голос
/ 08 апреля 2011

Как видно из ответа Хачика, поддержка флажка обеспечивается таблицей на основе класса столбца столбца.

Однако, если вы хотите установить флажок только в определенной строке определенного столбца, вам необходимо переопределить методы getCellRenderer (...) и getCellEditor (...), чтобы вернуть средство визуализации / редактор для данной ячейки. , Что-то вроде:

public TableCellEditor getCellEditor(int row, int column)
{
    int modelColumn = convertColumnIndexToModel( column );

    if (modelColumn == 1 && row < 3)
        return getDefaultEditor(Boolean.class);
    else
        return super.getCellEditor(row, column);
}
1 голос
/ 08 апреля 2011

Не уверен насчет кнопки, но вот рабочий пример установки флажка:

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

public class Test {
  public static void main(String [] args) throws Exception {
    DefaultTableModel model = new DefaultTableModel(null, new String [] {"CheckMe", "Value"}) {
                                public Class getColumnClass(int c) {
                                  switch (c) {
                                    case 0: return Boolean.class;
                                    default: return String.class;
                                  }   
                                } };
    JTable table = new JTable(model);
    JFrame frame = new JFrame("CheckBox Test");
    frame.add(table);
    model.addRow(new Object [] {true, "This is true"});
    model.addRow(new Object [] {false, "This is false"});
    frame.pack(); frame.validate();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
  }
}
0 голосов
/ 08 апреля 2011

Для этого вам нужно написать TableCellRenderer и TableCellEditor.

Вы можете использовать стандартные реализации Swing, чтобы упростить его.

В каждом классе вам придется переопределять один метод этих интерфейсов, и в нем проверять переданные row и column аргументы; если и строка, и столбец соответствуют вашим критериям, верните JCheckBox или JButton, в противном случае верните JComponent, возвращенный реализацией super (при использовании стандартных реализаций свинга этих интерфейсов).

0 голосов
/ 08 апреля 2011

Для флажков: Здесь и здесь Вы найдете рабочий пример.

Для кнопок: здесь и здесь вы найдете рабочий пример.

...