我遇到了问题,我无法单击按钮。它们的行为就像只是带有按钮设计的文本字段。
my Main
:
tableModStudents = (DefaultTableModel) studentsTable.getModel();
studentsTable.getColumn(studentsTable.getColumnName(8))
.setCellRenderer(new JButtonRenderer());
studentsTable.getColumn(studentsTable.getColumnName(8))
.setCellEditor(new JButtonEditor());
my CellRenderer
:
public class JButtonRenderer implements TableCellRenderer {
private JButton button = new JButton();
public Component getTableCellRendererComponent(JTable table,
Object buttonText, boolean isSelected, boolean hasFocus,
int row, int column) {
table.setShowGrid(true);
button.setText("Details");
button.setToolTipText(buttonText.toString());
return button;
}
}
my CellEditor
:
public class JButtonEditor extends AbstractCellEditor implements TableCellEditor {
private JButton button;
private String txt;
public JButtonEditor() {
super();
button = new JButton();
button.setOpaque(true);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
System.out.println("Button gedrückt!");
}
});
}
public Object getCellEditorValue() {
return null;
}
public boolean isCellEditable(EventObject anEvent) {
return true;
}
public boolean shouldSelectCell(EventObject anEvent) {
return false;
}
public boolean stopCellEditing() {
return super.stopCellEditing();
}
public void cancelCellEditing() {
}
public void addCellEditorListener(CellEditorListener l) {
}
public void removeCellEditorListener(CellEditorListener l) {
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
txt = (value == null) ? "" : value.toString();
button.setText(txt);
return button;
}
}
你能找出其中的问题吗?它让我发疯...
非常感谢 :)
查看表按钮列 https://tips4java.wordpress.com/2009/07/12/table-button-column/.
它将按钮渲染器和编辑器组合在一个类中。
您所需要做的就是提供定制Action
当您调用按钮时(通过单击它或调用其助记符)来调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)