2015-07-21 61 views
0

我必須知道如何在組合框內組合字符串和SVG。
例如,SVG應該位於字符串的末尾,以顯示字符串是否已經設置在某處。
所以一個已經出現的項目應該是這樣的:
「這個字符串已經出現在別的地方」+ mySVG。如何在Combobox中結合字符串和SVG?

如果字符串沒有出現在別的地方,items的值就是字符串本身。

顯示字符串沒有問題,我的問題從添加SVG開始。

我的SVG是這樣的:

SVGPath mySVG = new SVGPath(); 
mySVG.setContent("M0,4.2l1.4,-0.3L3,5.7A13,13 0 0,1 7.4,0H8.5A15,15 0 0,0 4,7.2L2.5,7.5Z"); 

我希望你明白我想做的事情。

回答

1

您可以通過一個電池工廠設置爲ComboBox做到這一點:

public class JavaFxTest2 extends Application { 
    @Override 
    public void start(Stage primaryStage) throws Exception { 
     ComboBox<String> comboBox = new ComboBox<>(); 
     comboBox.getItems().addAll("apple", "banana", "orange"); 
     comboBox.setCellFactory(l -> new ListCell<String>() { 
      private SVGPath mySVG; 

      { 
       setContentDisplay(ContentDisplay.RIGHT); 
       mySVG = new SVGPath(); 
       mySVG.setContent("M0,4.2l1.4,-0.3L3,5.7A13,13 0 0,1 7.4,0H8.5A15,15 0 0,0 4,7.2L2.5,7.5Z"); 
      } 

      @Override 
      protected void updateItem(String item, boolean empty) { 
       super.updateItem(item, empty); 
       if (!empty) { 
        if ("banana".equals(item)) { 
         setGraphic(mySVG); 
        } else { 
         setGraphic(null); 
        } 
        setText(item); 
       } else { 
        setGraphic(null); 
        setText(null); 
       } 
      } 

     }); 
     primaryStage.setScene(new Scene(comboBox)); 
     primaryStage.show(); 
    } 

    public static final void main(String[] args) { 
     launch(args); 
    } 
} 
+0

非常感謝多數民衆贊成我一直在尋找:) – Zydar