我创建了一个表,在其中的一行有一个评估按钮和一个图像按钮,一旦你点击其中一个按钮,一个动作就会发生,但问题是,一旦我在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);
你有这个。
if (row > -1 && column == 6) {
return eval;
}
在添加动作监听器的代码之前,所以该代码没有达到。
我建议在调试器中运行并放置断点,这有助于快速跟踪这样的问题。