javafx2 응용 프로그램에서 ComboBox는 항목 목록을 표시해야합니다 (예 : String
).javafx-2 ComboBox 변환기 : null 값에 대해 toString (T 객체) 메서드가 호출되지 않습니다.
이 목록에는 사용자가 선택을 허용 할 수 있기를 원하기 때문에 null
항목이 포함되어 있습니다.
ComboBox의 변환기 속성을 사용하고 있었기 때문에 비어있는 경우 대신 "[none]"과 같이 멋진 표현을 제공 할 수 있는지 궁금했습니다.
그러나 toString (Object 객체)이 null 항목에 대해 호출되지 않는다는 것을 발견했습니다.
다음은이 사례를 재현 한 가장 짧은 코드입니다. 포함 된 버전 정보.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ComboBox;
import javafx.stage.Stage;
import javafx.util.StringConverter;
public class T05 extends Application {
@Override public void start(Stage primaryStage) throws Exception {
System.out.println(System.getProperty("java.runtime.version"));
System.out.println(System.getProperty("javafx.runtime.version"));
System.out.println(System.getProperty("os.version"));
System.out.println(System.getProperty("os.name"));
ComboBox c = new ComboBox();
//c.setEditable(true);
primaryStage.setScene(new Scene(c));
primaryStage.show();
c.getItems().add("first");
c.getItems().add(null);
c.setConverter(new StringConverter<String>(){
@Override public String toString(String object) {
System.out.print("converting object: ");
if (object==null) {
System.out.println("null");
return "[none]";
}
System.out.println(object.toString());
return object.toString();
}
@Override public String fromString(String string) {
throw new RuntimeException("not required for non editable ComboBox");
}
});
}
}
그리고 당신이 if (object==null)
문의 진정한 지사가 호출되지 않습니다 볼 수있는 이곳은 출력이 있습니다. 버그 또는 기능입니까? 아직 null 표현을 사용자 정의 할 수 있습니까?
1.6.0_29-b11
2.2.3-b05
6.1
Windows 7
converting object: first
converting object: first
converting object: first
갱신
는은 (그냥 주석을 제거) 추가 :
c.setEditable(true);
내가 다른 행동을 얻을, 즉, 콤보 선택 상자에 널 항목을 클릭, 나는 방법을 얻을 toString이 호출되었지만 결과가 선택 상자에 표시되지 않습니다.
+1 : 이것은 많은 경우에 유효한 해결 될 것으로 보인다. 나는 그것을 테스트했고 작동하지만 comboBox가 편집 가능하지는 않습니다. 정확히 말하면 : 프롬프트 텍스트는 "선택 상자"에 항상 표시되지만 콤보를 편집 할 수있는 경우 "텍스트 필드 영역"에는 표시되지 않습니다. 그러나이 질문은 가능한 버그에 관한 것이므로 원래 질문에 대한 응답으로 간주 할 수 없습니다. 버그있는 동작에 대한 추가 단서로 질문을 업데이트했습니다. – AgostinoX
바로 그게 내가 찾고 있던거야. 감사. –