【发布时间】:2014-03-24 08:11:40
【问题描述】:
我有一个 jtable,第一列有 jbuttons。但是,当我尝试单击按钮时,什么也没有发生。将鼠标悬停在按钮上也不会改变它的阴影以显示它是可点击的..
我在 Java Applet 中运行它。
我正在使用此处的按钮列类: http://www.camick.com/java/source/ButtonColumn.java
这是我自己插入的代码
tablemodel = new DefaultTableModel();
//PnlThinClientTable.COLUMNS is an array of strings with the titles of the columns
tablemodel.setColumnIdentifiers(PnlThinClientTable.COLUMNS);
JTable table = new JTable(tablemodel);
table.setEnabled(false);
table.setDefaultRenderer(table.getColumnClass(5), new CustomTblCellRenderer());
table.setBackground(Color.WHITE);
Action wakeUpRow = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e){
JTable table = (JTable)e.getSource();
int modelRow = Integer.valueOf( e.getActionCommand() );
System.out.println("Action Performed");
}
};
// Main.hm_language.get(Language.WAKE_ON_LAN) returns the title of the column i'm interested in
table.getColumn(Main.hm_language.get(Language.WAKE_ON_LAN)).setCellRenderer(new ButtonColumn(table,wakeUpRow,0));
table.getColumn(Main.hm_language.get(Language.WAKE_ON_LAN)).setCellEditor(new ButtonColumn(table, wakeUpRow, 0));
【问题讨论】:
-
你的问题在下一行
table.setEnabled(false);。这使您的JTable被禁用,因为您不能在您的专栏中使用JButton。 -
谢谢!有没有办法只启用所选列,因为我不希望其他列可编辑
-
是的,你可以。覆盖
DefaultTableModel的isCellEditable(int row, int column)方法 -
设法修复它。 @override public boolean isCellEditable(int row, int col)。如果您发布答案,我会对其进行评分。谢谢
标签: java swing applet jtable jbutton