Javafx는 Java에서 그래픽 애플리케이션을 구축하는 데 사용되는 새로운 표준 라이브러리이지만 많은 프로그래머는 여전히 Swing 또는 AWT를 사용하는 것을 고수합니다. 다음은 Javafx 도구 세트에서 새로운 멋진 기능을 갖춘 응답적이고 빠른 응용 프로그램을 구축하는 방법에 대한 몇 가지 제안입니다!
1. 속성 값
Javafx 구성 요소를 완전히 이해하고 있다면 Mobile이 그 부동산을 만났습니다. FX 라이브러리의 거의 모든 값은 파티션의 너비, 이미지의 크기, 레이블의 텍스트, 목록의 자식 항목 및 확인란의 상태를 관찰 할 수 있습니다. 속성은 대안으로 나뉩니다. 서기 방법을 사용하여 또는 직접 쓰기 가능한 값을 수정할 수 있습니다. Javafx는 이벤트 처리 프로세스를 처리 하고이 속성에 의존하는 모든 구성 요소가 알리도록합니다. 읽을 수있는 속성에는 값이 수정 될 때 알림을받을 수있는 방법이 있습니다.
예:
// 읽기 가능하고 쓰기 가능한 StringProperty name = new SimplestringProperty ( "emil"); // 읽기 전용 ObservableBooleanValue nameisempty = name.isempty ();
2. 바인드 값
쓰기 가능하고 읽을 수있는 값이 있으면 이러한 값이 어떻게 연관되어 있는지에 대한 규칙을 정의 할 수 있습니다. 쓰기 가능한 속성은 읽을 수있는 속성에 묶일 수 있으므로 그 값은 항상 읽을 수있는 속성과 일치합니다. 바인딩은 즉시 발생하지 않지만 값이 관찰되기 전에 수행됩니다 (그리고 내가 한 일을 살펴보십시오). 결합은 일방 통과 또는 양방향 일 수 있습니다. 물론, 양방향이라면 두 속성 모두 작성해야합니다.
예:
Textfield Fielda = new TextField (); TextField FieldB = New TextField (); Fielda.prefWidthProperty (). bind (fieldb.widthProperty ());
3. 관찰 가능한 목록
속성만이 관찰 할 수있는 유일한 것은 아닙니다. 목록이 관찰자로 캡슐화되면 목록의 구성원도 관찰 할 수 있습니다. ObservAblelist의 응답 모델은 상당히 발전했습니다. 목록이 수정 된 경우 알림을받을 수있을뿐만 아니라 목록이 수정되는 방법도 볼 수 있습니다.
예:
list <string> elogelist = arrays.aslist ( "foo", "bar", "bar"); ObservableList <string> list = fxcollections.observablelist (otherlist); list.addlistener ((listchangelistener.change <? extends string> change) -> {system.println ( ") {while (while.nxt."); (change.wasadded ()) {system.out.println ( "items" + change.getAddedSublist ()}} if (change.wasRemoved ()) { "items" + change.getRemoved ()}); list.set (1, "foo"); system.out.println ( "새 목록 :" + 목록);위 코드의 실행 출력은 다음과 같습니다.
오래된 목록 : [foo, bar, bar]를받은 이벤트 .items [foo]가 추가되었습니다. items [bar]가 제거되었습니다. New List : [foo, foo, bar]
보시다시피, 설정 작업은 이벤트 만 한 번만 트리거됩니다.
4. StringConverter
때로는 바인딩을 만들려면 구성 요소에서 값을 추출 할 필요가 없다는 것을 알게됩니다. 이것의 전형적인 예는 텍스트 필드에서 얻는 경로가있는 StringProperty가 있다는 것입니다. 이 값이 경로로 표시된 관찰 가능한 속성을 갖고 싶다면 StringConverter를 만들어야합니다.
예:
Textfield filelocation = new Textfield (); StringProperty location = filelocation.textProperty (); Property <ath> Path = New SimpleObjectProperty <> (); bindings.bindBidirection (위치, 경로, 새 StringConverter <path> () {@override public String toString (path path) {return path.toString ();} @Override Public Path fromString (String String) {return paths.get;}});객체 속성은 텍스트 필드의 값에 대한 양방향 바인딩이 아닙니다.
5. 표현
위의 바인딩 클래스를 사용하면 모든 유형의 표현식을 만들 수 있습니다. 예를 들어, 사용자가 정보를 입력 할 수있는 두 개의 텍스트 필드가 있습니다. 이제 읽기 전용 도메인을 정의하고 싶습니다. 여기에는 항상 문자열이 포함됩니다. 두 줄의 길이가 동일하면, 두 줄은 디스플레이를 위해 문자별로 문자 간격으로 혼합됩니다. 길이가 같지 않으면 도움말 메시지가 표시됩니다.
예:
Textfield First = New TextField (); TextField Second = New TextField (); TextField Mix = New TextField (); mix.textProperty (). bindings. bindings.when (first.lengthproperty (). isequalto (second.lengthproperty ())) sec )). 그렇지 않으면 ( "정확히 같은 길이의 두 줄을 입력하십시오."));
이것은 Javafx의 많은 특징 중 하나 일뿐입니다. 이 이벤트 시스템을 활용할 수있는 더 창의적인 방법을 찾을 수 있기를 바랍니다.