2012-03-14 13 views
6

Mam aplikację JavaFX używającą FXML do budowania swojego GUI.Prefill ListView w aplikacji z FXML

Po uruchomieniu tej aplikacji potrzebuję programu ListView, który ma załadowane niektóre wartości, na przykład z bazy danych. Jak mogę to zrobić?

Wiem, jak utworzyć aplikację, która ładuje elementy do ListView po kliknięciu przez użytkownika przycisku lub czegoś podobnego (atrybut "onAction" w FXML). Ale to mnie nie pasuje, ponieważ muszę automatycznie ładować elementy do ListView.

Odpowiedz

8

Jeśli fxml z kontrolera, jak obok:

<AnchorPane xmlns:fx="http://javafx.com/fxml" fx:controller="test.Sample"> 
    <children> 
     <ListView fx:id="listView"/> 
    </children> 
</AnchorPane> 

można po prostu wdrożyć Initializable w kontrolerze:

public class Sample implements Initializable { 
    @FXML 
    private ListView listView; 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 
     // change next line to DB load 
     List<String> values = Arrays.asList("one", "two", "three"); 

     listView.setItems(FXCollections.observableList(values)); 

    } 
} 
14

ten wypełnia moje choicebox z pięciu wcześniej ustalonych szybkości transmisji. Zakładam, że jeśli spróbujesz dodać elementy z kontrolera, lista pokazuje tylko te wartości (nietestowane).

<ChoiceBox fx:id="baudRates" layoutX="234.0" layoutY="72.0"> 
    <items> 
     <FXCollections fx:factory="observableArrayList"> 
      <String fx:value="4800" /> 
      <String fx:value="9600" /> 
      <String fx:value="19200" /> 
      <String fx:value="57600" /> 
      <String fx:value="115200" /> 
     </FXCollections> 
    </items> 
</ChoiceBox> 

Należy również zawierać następujące oświadczenie import w swoim FXML:

<?import javafx.collections.*?> 
+4

Works, ale nie zapomnij dodać niezbędnych deklaracji importowej do początku pliku FXML; jak '' –

+0

Jak dostarczyć niestandardową fabrykę? – crush

Powiązane problemy