5
텍스트 객체를 사용하여 ComboBox를 채 웁니다. String이 아닌 Text 객체를 사용하면 프로그램에서 사용할 수있는 id 값을 추가 할 수 있으며 나중에 UI를 국제화하기로 결정할 때 악용 할 수 있습니다. 어쨌든, 여기에 내가 뭘하는지입니다 : Main 클래스 :JavaFX의 ComboBox 항목 관리
public class MainApp extends Application {
private Stage primaryStage;
@Override
public void start(Stage primaryStage) {
this.primaryStage = primaryStage;
try {
AnchorPane paneMain = (AnchorPane) FXMLLoader.load(getClass().getResource("Test.fxml"));
Scene scene = new Scene(paneMain);
primaryStage.setScene(scene);
primaryStage.show();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
컨트롤러 :
public class Test implements Initializable{
@FXML
private AnchorPane anchorPane;
@FXML
private ComboBox<Text> comboTime;
private Text days;
private Text hours;
private Text minutes;
private int timeMultiplier;
public Test(){
days = new Text("Days");
days.setId("86400000");
hours = new Text("Hours");
hours.setId("3600000");
minutes = new Text("Minutes");
minutes.setId("3600000");
timeMultiplier = 0;
}
@Override
public void initialize(URL location, ResourceBundle resources) {
comboTime.getItems().removeAll(comboTime.getItems());
comboTime.getItems().addAll(days, hours, minutes);
comboTime.getSelectionModel().select(hours);
}
@FXML
private void setTimeMultiplier(){
Text text = comboTime.getSelectionModel().getSelectedItem();
timeMultiplier = Integer.valueOf(text.getId());
}
}
Test.fxml : 이제
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.collections.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>
<AnchorPane id="AnchorPane" fx:id="anchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="100.99990000000253" prefWidth="94.99990000000253" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="com.spacitron.backupp.ui.controllers.Test">
<children>
<HBox id="HBox" alignment="CENTER" layoutX="41.0" layoutY="224.0" prefWidth="216.0" spacing="5.0" />
<ComboBox id="comboInterval" fx:id="comboTime" editable="false" layoutX="14.0" layoutY="22.0" onAction="#setTimeMultiplier">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Item 1" />
<String fx:value="Item 2" />
<String fx:value="Item 3" />
</FXCollections>
</items>
</ComboBox>
</children>
</AnchorPane>
,이 작품 잘 됐네. 문제는 그러나 나는이 항목을 선택하면 해당 항목의 텍스트가 빈과 같이가는 것입니다 :
그리고 다른 하나를 선택하면, 그 역시 사라 :
I을 여전히 항목을 선택할 수 있지만 볼 수는 없습니다. 이 버그입니까? 그렇다면 주위에 방법이 있습니까?
을 : // 유래 .com/help/mcve 사람들이 당신을 위해 자신의 컴퓨터에서 시도해 볼 수 있습니다. – Goibniu
@Goibniu 편집이 완료되었습니다. – spacitron
ComboBox에 대한 설명서를 보았습니다. (JavaFx2.1 +에서만 추가되었으므로 (미안) 코드를 테스트 할 수 없습니다.) 인스턴스 노드를 추가하면 안된다는 경고가 시작되었습니다 직접적으로 셀 팩터 리를 사용하여 인스턴스를 생성해야합니다. http://docs.oracle.com/javafx/2/api/javafx/scene/control/ComboBox.html이 작업을 수행 할 것인지 확실하지 않습니다. 어떤 용도로도 사용할 수 있지만 촬영하고 볼 수 있습니다. – Goibniu