java - JTable 单元格中的按钮不可单击

标签 java swing applet jtable jbutton

我有一个 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));

最佳答案

感谢@alex2410提供的解决方案

我必须确保单元格可编辑

这可以通过在声明时扩展 Table 并覆盖 isCellEditable(int row, int col): boolean 方法来完成, 或者在我的例子中,我在单元格编辑器中重写了 isCellEditable(EventObject e):boolean 并将其应用于列,

因此我正在使用的单元格编辑器中的代码片段是

@Override
public boolean isCellEditable(EventObject e){
    return true;
}

这是因为应用编辑器的所有单元格都需要可编辑,因为在我的例子中它们都是按钮。

关于java - JTable 单元格中的按钮不可单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22604038/

相关文章:

java - java中是否存储了运行时类型信息?

java - 这个 Java 缓存线程安全且最佳吗?

java - (Java) 获取加载到动态类型对象中的字符串值?

java - setResizing(false) 不起作用后强制 JFrame 不调整大小

java - FileTreeModel 多根

flash - Flash/Java Applet 的 NPAPI 插件的替代品

java - 由于 chrome 删除了 NPAPI 支持,是否有其他方法在 chrome 中显示 NPAPI?

Java - 如何独立于平台输出

java - 如何从 JButton 获取按下的字母并将其与字符串进行比较

java - 从嵌入式 Applet 进行 HTTP 调用时绕过内置浏览器身份验证