さてあなたは洙多くの方法、および非常に多くの方法で達成できるが、あなたがTableCell
でそれを実装する方法に関係していますが、それはあなたがvirtualization
を支援するために使用
DataHolder
Object
に主に依存することになります
TableCell
のupdateItem(Object,boolean)
を作成して、スタイルなどのセルの更新を実装する必要があります。もう1つを呼び出す場合でもupdateSelected(boolean)
と関連付ける必要があります。 updateIndex()
あなたのためにこのようなものを使用してくださいDataHolder
class
あなたが例えば
@Override
public void updateItem(CellDataHolder item, boolean empty) {
super.updateItem(item, empty);
if(empty){return;}
setText(item.value);//set your text
if(item.badMatch){//check if the text fits.
setStyle(wrongFormatStyle);//this is where you set your bad style
}else{
setStyle(normalyStyle);//the style you want
}
}
をあなたの項目のチェックを追加して、あなたのStringConverter
で、あなたのテキストが有効であるかどうかを確認するためにそれを使用します述べたもののいずれかの方法であなたのセルで今
private class CellDataHolder {
public CellDataHolder (String a){
value = a;
}
String value = "empty"; //this being the text to show
boolean badMatch = false; //this being the flag to index whether the
//text matches your preference
}
、私はあなたがStringConverterを使用する必要があると感じる理由は、複数の呼び出しを減らすことができることですupdate...()
は、それらのメソッドが何度も呼ばれていますが、多くの時間は、そこに長い間多くの作業を置くためにクールではありませんあなたのセルは、ここに、たとえば
setConverter(new StringConverter<CellDataHolder>() {
@Override
public String toString(CellDataHolder arg0) {
arg0.badMatch =
arg0.value.matches(".*[a-zA-Z]+.*");//here you add your algorithm
return arg0.value;
}
@Override
public CellDataHolder fromString(String arg0) {
getItem().value = arg0;
return getItem();
}
});
また、リフレッシュが呼び出されたかどうか、または明示的な編集が行われているかどうかにかかわらず、チェックを呼び出すときのフィルタの仕方をフィルタリングすることもできます。例えばここで
setConverter(new StringConverter<CellDataHolder>() {
@Override
public String toString(CellDataHolder arg0) {
if(isEditing()){ //whether it is an edit
arg0.badMatch =
arg0.value.matches(".*[a-zA-Z]+.*");//here you add your algorithm
}
return arg0.value;
}
@Override
public CellDataHolder fromString(String arg0) {
getItem().value = arg0;
return getItem();
}
});
がfull demo snippet
デモプレビューで
はそれがお役に立てば幸いです。
希望ですか?とても助けになりました。どうもありがとうございます。 :D –