Java can';t访问表模型中createCell方法内的addActionListener方法

Java can';t访问表模型中createCell方法内的addActionListener方法,java,codenameone,Java,Codenameone,我已经创建了一个表,在其中的一行中有一个evaluate按钮和一个image按钮,一旦你点击其中一行,就会发生一个动作,但问题是一旦我在createCell方法中创建了一个动作监听器,一旦我点击它,它似乎就不起作用了 Object[][] rows = new Object[articles.size()][]; for (int iter = 0; iter < rows.length; iter++) { rows[iter] = new Object[]{

我已经创建了一个表,在其中的一行中有一个evaluate按钮和一个image按钮,一旦你点击其中一行,就会发生一个动作,但问题是一旦我在createCell方法中创建了一个动作监听器,一旦我点击它,它似乎就不起作用了

  Object[][] rows = new Object[articles.size()][];
    for (int iter = 0; iter < rows.length; iter++) {
        rows[iter] = new Object[]{
            articles.get(iter).getName(),
            0,
            articles.get(iter).getDescription(),
            articles.get(iter).getLabel(),
            articles.get(iter).getQuantity(),
            articles.get(iter).getRating(), 0
        };
    }

    TableModel model = new DefaultTableModel(new String[]{"name", "description", "Image", "label", "quantity", "rating", "rate"}, rows);
    Table table = new Table(model) {
        @Override
        protected Component createCell(Object value, int row, int column, boolean editable) {
            Button eval = new Button("Evaluate");
            Button img = new Button("See image");

            if (row > -1 && column == 2) {
                System.out.println("Value="+value.toString());
                return img;
            }
            if (row > -1 && column == 6) {
                return eval;
            }
            eval.addActionListener((ActionListener) (ActionEvent evt) -> {
                    System.out.println("click on eval");
            });
            img.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent evt) {
                           System.out.println("click on img");
                }
            });
            return super.createCell(value, row, column, editable);
            }
        };
        add(table);
Object[][]行=新对象[articles.size()][];
对于(int-iter=0;iter-1&&column==2){
System.out.println(“Value=“+Value.toString());
返回img;
}
if(行>-1&&column==6){
返回评估;
}
eval.addActionListener((ActionListener)(ActionEvent evt)->{
System.out.println(“单击评估”);
});
addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件evt){
System.out.println(“点击img”);
}
});
返回super.createCell(值、行、列、可编辑);
}
};
增加(表);
您有:

if (row > -1 && column == 6) {
    return eval;
}
在添加操作侦听器的代码之前,使代码不被访问


我建议在调试器中运行并放置断点,这有助于快速跟踪此类问题。

你能说得更具体一点吗?我不明白你的意思,我打开了链接并阅读了教程,但仍然没有找到解释为什么ActionListener不能在createCell中工作method@Abra这是一个代号一个问题,不是摇摆问题。注意Table和not jtable的用法,这是一个代码名