1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| class JTableButtonRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
if (value instanceof JButton)
return (JButton) value;
return this;
}
}
class JTableButtonMouseListener implements MouseListener {
private JTable __table;
private int column;
private void __forwardEventToButton(MouseEvent e) {
TableColumnModel columnModel = __table.getColumnModel();
column = columnModel.getColumnIndexAtX(e.getX());
int row = e.getY() / __table.getRowHeight();
Object value;
JButton button;
MouseEvent buttonEvent;
if (row >= __table.getRowCount() || row < 0
|| column >= __table.getColumnCount() || column < 0)
return;
value = __table.getValueAt(row, column);
if (!(value instanceof JButton))
return;
button = (JButton) value;
buttonEvent = (MouseEvent) SwingUtilities.convertMouseEvent(
__table, e, button);
button.dispatchEvent(buttonEvent);
// This is necessary so that when a button is pressed and released
// it gets rendered properly. Otherwise, the button may still appear
// pressed down when it has been released.
__table.repaint();
}
public JTableButtonMouseListener(JTable table) {
__table = table;
}
public void mouseClicked(MouseEvent e) {
__forwardEventToButton(e);
// tu peux ici rajouter tes actions
}
public void mouseEntered(MouseEvent e) {
// __forwardEventToButton(e);
}
public void mouseExited(MouseEvent e) {
// __forwardEventToButton(e);
}
public void mousePressed(MouseEvent e) {
// __forwardEventToButton(e);
}
public void mouseReleased(MouseEvent e) {
// __forwardEventToButton(e);
}
}
class MyJButtonTableModel extends DefaultTableModel {
public MyJButtonTableModel(Vector<String> columnNames, int numRow) {
super(columnNames, numRow);
}
public Class getColumnClass(int c) {
if (c != 0) {
return JButton.class;
}
return String.class;
}
public boolean isCellEditable(int row, int col) {
return false;
}
} |
Partager