Usando table javaFx

tenho as seguintes classes:

package view;

import java.util.List;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

public class VitrineApp extends Application{

	private AnchorPane pane;
	private TextField txPesquisa;
	private TableView<ItensProperty> tbVitrine;
	private TableColumn<ItensProperty, String> columnProduto;
	private TableColumn<ItensProperty, Double> columnPreco;
	private static ObservableList<ItensProperty> listItens = FXCollections.observableArrayList();
	private static Carrinho carrinho;		
	
	@Override
	public void start(Stage arg0) throws Exception {
		
		
	}
	
	private void initComponents(){
		
		pane = new AnchorPane();
		pane.setPrefSize(800, 600);
		
		txPesquisa = new TextField();
		txPesquisa.setPromptText("Digite o item para pesquisa");
		
		tbVitrine = new TableView<ItensProperty>();
		tbVitrine.setPrefSize(780, 550);
		
		columnProduto = new TableColumn<ItensProperty, String>();
		columnPreco = new TableColumn<ItensProperty, Double>(); 
		tbVitrine.getColumns().addAll(columnProduto, columnPreco);
		pane.getChildren().addAll(txPesquisa, tbVitrine);
		
		carrinho = new Carrinho();
		
		columnProduto.setCellValueFactory(new PropertyValueFactory<ItensProperty, String>("produto"));
		columnPreco.setCellValueFactory(new PropertyValueFactory<ItensProperty, Double>("preco"));
	}
	
	private void initItens(){
		
		Vitrine v = new Vitrine();
		v.addProdutos(new Produto("Bola Topper", 15.00), new Produto("Luvas Umbro", 9.00), new Produto("Camisa Esportiva", 40.00),
				new Produto("Chuteira Nike Mercurial", 199.00), new Produto("Caneleira Topper", 10.00));
		
		for(Produto p : v.getProdutos())
			listItens.add(new ItensProperty(p.getProduto(), p.getPreco()));
		
		tbVitrine.setItems(listItens);
	}
	
	private ObservableList<ItensProperty> findItens(){
		ObservableList<ItensProperty> itensEncontrados = FXCollections.observableArrayList();
		for(ItensProperty itens: listItens){
			if(itens.getProduto().contains(txPesquisa.getText())){
				itensEncontrados.add(itens);
			}
		}
	return itensEncontrados;
	}
	
	private void initListeners(){
		
		txPesquisa.setOnAction(new EventHandler<ActionEvent>() {
			
			@Override
			public void handle(ActionEvent arg0) {
				// TODO Auto-generated method stub
				if(!txPesquisa.getText().equals("")){
					
					tbVitrine.setItems(findItens());
				}else{
					tbVitrine.setItems(listItens);
				}
			}
		});
	}
	
	public static void main(String[] args) {
		
		launch(args);
	}

}
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleStringProperty;

public class ItensProperty {

	private SimpleStringProperty produto;
	private SimpleDoubleProperty preco;
	
	public ItensProperty(String produto, double preco){
		
		this.produto = new SimpleStringProperty(produto);
		this.preco = new SimpleDoubleProperty(preco);
	}

	public SimpleStringProperty getProduto() {
		return produto;
	}

	public void setProduto(SimpleStringProperty produto) {
		this.produto = produto;
	}

	public SimpleDoubleProperty getPreco() {
		return preco;
	}

	public void setPreco(SimpleDoubleProperty preco) {
		this.preco = preco;
	}
}

obs: Minha duvida está aqui na classe VitrineApp está parte do código if(itens.getProduto().contains(txPesquisa.getText())) contains não está na classe SimpleStringProperty , olhei na documentação http://docs.oracle.com/javafx/2/api/javafx/beans/property/SimpleStringProperty.html e não tem nenhum método contains queria saber se essa parte está errada

achei a resposta

package view;

import javafx.application.Application;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

public class VitrineApp extends Application{
	
	private AnchorPane pane;
	private TextField txPesquisa;
	private TableView<ItensProperty> tbVitrine;
	private TableColumn<ItensProperty, String> columnProduto;
	private TableColumn<ItensProperty, Double> columnPreco;
	private static ObservableList<ItensProperty> listItens = FXCollections.observableArrayList();
	public static Carrinho carrinho = new Carrinho();
	
	@Override
	public void start(Stage stage) throws Exception {
		
		initComponents();//aqui são os componentes 
		initListeners(); //ação dos botões
		initLayout();//a caixa de pesquisa (posição)
		
		Scene scene = new Scene(pane);
		stage.setScene(scene);
		stage.setTitle("Vitrine - GolFX");
		
		stage.show();
	}
	
	public static void main(String[] args) {
		launch(args);
	}
	
	private void initComponents() {
		
		pane = new AnchorPane();
		pane.setPrefSize(800, 600);
		
		txPesquisa = new TextField();
		txPesquisa.setPromptText("Digite o item para pesquisa");
		
		tbVitrine = new TableView<ItensProperty>();
		tbVitrine.setPrefSize(780, 550);
		
		columnProduto = new TableColumn<ItensProperty, String>();
		columnProduto.setCellValueFactory(new PropertyValueFactory<ItensProperty, String>("produto"));
		
		columnPreco = new TableColumn<ItensProperty, Double>();
		columnPreco.setCellValueFactory(new PropertyValueFactory<ItensProperty, Double>("preco"));
		
		tbVitrine.getColumns().addAll(columnProduto, columnPreco);
		pane.getChildren().addAll(txPesquisa, tbVitrine);
		
		
	}
	
	private void initListeners() {
		
		txPesquisa.setOnAction(new EventHandler<ActionEvent>() {
			@Override
			public void handle(ActionEvent event) {
				
				if (!txPesquisa.getText().equals("")) {
					tbVitrine.setItems(findItems());
				} else {
					tbVitrine.setItems(listItens);
				}
			}
		});
		
		tbVitrine.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<ItensProperty>() {
			
	@Override
	public void changed(
					
			ObservableValue<? extends ItensProperty> value, ItensProperty oldItem, ItensProperty newItem) {
				
				ItemApp.produto = new Produto(newItem.getProduto(),
					newItem.getPreco());
				ItemApp.index = tbVitrine.getSelectionModel().getSelectedIndex();
						
				try {
					new ItemApp().start(new Stage());
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
	
	private void initLayout() {
		
		txPesquisa.setLayoutX(590);
		txPesquisa.setLayoutY(10);
		tbVitrine.setLayoutX(10);
		tbVitrine.setLayoutY(40);
	}
	
	private void initItens() {
		
		Vitrine v = new Vitrine();
		
		v.addProdutos(new Produto("Bola Topper", 15.00), new Produto(
				"Luvas Umbro", 9.00), new Produto("Camisa Esportiva", 40.00),
				new Produto("Chuteira Nike Mercurial", 199.00), new Produto(
						"Caneleira Topper", 10.00));
		
		for (Produto p : v.getProdutos())
			listItens.add(new ItensProperty(p.getProduto(), p.getPreco()));
	}
	
	private ObservableList<ItensProperty> findItems() {
		
		ObservableList<ItensProperty> itensEncontrados = FXCollections.observableArrayList();
		
		for (ItensProperty itens : listItens) {
			if (itens.getProduto().contains(txPesquisa.getText())) {
				itensEncontrados.add(itens);
			}
		}
		
		return itensEncontrados;
	}
	
	public class ItensProperty {
		
		private SimpleStringProperty produto;
		private SimpleDoubleProperty preco;

		public ItensProperty(String produto, double preco) {
			
			this.produto = new SimpleStringProperty(produto);
			this.preco = new SimpleDoubleProperty(preco);
		}

		public String getProduto() {
			
			return produto.get();
		}

		public void setProduto(String produto) {
			
			this.produto.set(produto);
		}

		public double getPreco() {
			
			return preco.get();
		}

		public void setPreco(double preco) {
			
			this.preco.set(preco);
		}
	}

}