CellFactory与CellValueFactory

时间:2014-05-31 12:56:49

标签: java javafx-2 javafx-8 fxml

让我描述一下情况。

我有一个带有整数变量的类,我有一个带有3列的TableView'< 100','100-200'和'> 200'添加了MyClass个对象。根据对象的myIntValue x 会显示在正确的列中。现在我想知道获得这个结果的最佳方法是什么。

第一个选项,在MyClass中制作方法,并将其作为我的CellValueFactory用于我的列:

public class MyClass{
   ...
   private int myIntValue;
   ...

   public boolean getLessThan100(){
       return myIntValue < 100;        
   }
   public boolean getBetween100And200(){
       return myIntValue >= 100 && myIntValue <= 200;        
   }
   public boolean getMoreThan200(){
       return myIntValue > 200;        
   }
}

在我的控制器中:

tcLessThan100.setCellValueFactory(new PropertyValueFactory<MyClass, Boolean>("lessThan100"));
tcBetween100And200.setCellValueFactory(new PropertyValueFactory<MyClass, Boolean>("between100And200"));
tcMoreThan200.setCellValueFactory(new PropertyValueFactory<MyClass, Boolean>("moreThan200"));

第二个选项,请勿在{{1​​}}中添加额外的方法,而是使用MyClass

CellFactory

在我的控制器中:

public class MyClass{
   ...
   private int myIntValue;
   ...

   public int getMyIntValue(){
       return myIntValue;        
   }
}

在CustomCellFactories类中:

tcLessThan100.setCellValueFactory(new PropertyValueFactory<MyClass, Integer>("myIntValue"));
tcLessThan100.setCellFactory(CustomCellFactories.getXCellFactory100());
tcBetween100And200.setCellValueFactory(new PropertyValueFactory<MyClass, Integer>("myIntValue"));
tcBetween100And200.setCellFactory(...);
tcMoreThan200.setCellValueFactory(new PropertyValueFactory<MyClass, Integer>("myIntValue"));
tcMoreThan200.setCellFactory(...);

我能够同时使用这两个选项,但我想知道其中一个选项是更好的方法(例如,为了获得更好的性能,......)。

1 个答案:

答案 0 :(得分:0)

快速回答:这里的计算很少。因此,无论是在内存还是CPU性能方面,无论您是以这种方式还是其他方式进行操作都无关紧要。与显示TableView时所发生的其他事情相比,任何差异都可以忽略不计。

因此,在我看来,这纯粹是一个设计问题。从域的角度来看,MyClass有哪些更重要的功能/属性?它是myIntValue还是myIntValue可以容纳的三个类别?“

基于我现在对问题的理解,我选择了第二选项,因为我看到的是视觉细节之间的小于/中/大于或更多,而不是重要的领域方面。但是你可以选择这样做,而不会有任何错误。 : - )