0

JTable在用户输入数字后,我需要更新图标JTextField

一步步:

  • 用户JTable连续单击,然后打开 aJFrame以编辑其内容。
  • 用户在JTextField其中EditFrame输入了一个从 0 到 100 的数字。该数字将在用户关闭后更改我的 JTable 行中显示的图标EditFrame

我在这里阅读了文档。我改变了我的方法。我杀死了渲染器并在我的 Meal 类中创建了静态图标并创建了一个这样的方法:

  public ImageIcon getIconByValue(int value){
    if(value==0)
        return ONESTAR;
    else
        return ...;     
}

并在我的表模型中进行了一些更改(以存储 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); 
 }

但是我的评分空间(应该在哪里显示星星)完全是空白的。注意:我也阅读了其他主题,但是对于如何更改 OnTheFly 中的图标没有任何帮助JTable

4

1 回答 1

0

它比我预期的要简单。我像这样在我的 bean 类中加载图像:

   private ImageIcon fivestars=new ImageIcon(getClass().getResource("/cr/hmp/gui/IMG/5star.png"));  

让我的模型在我的 getColumnClass 中返回一个图标类:

   case RATING:
        return ImageIcon.class;

在我的 getValueAt 我做了:

 return meal.getIconByValue( meal.getRating() );

现在在我关闭我的 EditFrame 后更新行没有任何问题。

于 2013-10-04T03:06:32.390 回答