用户在JTable
中输入数字后,我需要更新JTextField
中的图标。
步骤分步:
JTable
行,然后打开JFrame
以修改其内容。JTextField
中有一个EditFrame
,用户将一个数字从0添加到100.该数字会在用户关闭EditFrame
后更改我的JTable行中显示的图标我读了documentation here。我改变了我的aproach。我杀死了渲染器并在我的Meal类中创建了静态图标并创建了一个类似的方法:
public ImageIcon getIconByValue(int value){
if(value==0)
return ONESTAR;
else
return ...;
}
并在我的tablemodel中进行了一些更改(以存储ImageIcon):
public Class<?> getColumnClass(int columnIndex) {
switch (columnIndex) {
case RATING:
return ImageIcon.class;
...}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
//..other cases....//
case RATING:
meal.getIconByValue((int)aValue);
break;
}
public void setData(List<Meal> list){
this.meals.clear();
for(Meal m:list){
Meal meal=new Meal();
//...other sets..//
meal.getIconByValue(m.getRating());
}
this.meals.add(meal);
}
但是我的评级空间(应该显示星星),完全是空白的。
注意:我也阅读了其他主题,但没有一个有助于如何在JTable
中更改OnTheFly图标。
答案 0 :(得分:0)
它比我预期的更简单。我在我的bean类中加载了这样的图像:
private ImageIcon fivestars=new ImageIcon(getClass().getResource("/cr/hmp/gui/IMG/5star.png"));
让我的模型在我的getColumnClass中返回一个icon类:
case RATING:
return ImageIcon.class;
在我的getValueAt中我做了:
return meal.getIconByValue( meal.getRating() );
现在关闭我的EditFrame后没有任何问题就更新了这行。