java JButton添加到JTable中的JPanel中
我应该用Java Swing实现看板。我选择使用JTable。这个表的每个单元格都将包含一个我们自己实现的对象:一张卡片
课程卡扩展了JPanel。我们在每张卡片上都增加了按钮。问题是我够不着按钮
我已经尽了最大努力去理解文档中的TableModel和TableCellEditor。神谕com来理解如何使用表,但它似乎比预期的更复杂
这是我的代码:
class ViewKanbanBoard (extends JPanel) :
JTable kanbanBoard = new JTable(new KanbanModel());
JScrollPane spKanban = new JScrollPane(kanbanBoard);
kanbanBoard.setDefaultRenderer(Carte.class, new TableComponent());
class Carte (extends JPanel) :
private JLabel lbTitre;
public Carte(String texte) {
this.lbTitre = texte;
this.setLayout(new GridLayout(1,1);
JButton btSupprimer = new JButton();
this.add(btSupprimer);
}
class KanbanModel() (extends AbstractTableModel) :
private String titresColonnes [] = {"A FAIRE", "EN COURS", "TERMINE", "EN ATTENTE"}; //chaque colonne est associée à l'état d'une tache
private Carte [][] = {
{new Carte (""), new Carte(""), new Carte (""), new Carte ("")}
};
... (all the methods are implemented)
public boolean isCellEditable(int row, int col) {
return true;
}
public void setValueAt(JPanel value, int row, int col) {
this.data[row][col] = value;
fireTableCellUpdated(row, col);
}
class TableComponent (extends DefaultTableCellRenderer) :
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row,
int col) {
if (value instanceof JPanel)
return (JPanel) value;
return null;
}
共 (0) 个答案