Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #30542

Problem with JavaFX ChangeListener?

From Knute Johnson <eternal@knutejohnson.com>
Newsgroups comp.lang.java.programmer
Subject Problem with JavaFX ChangeListener?
Date 2014-12-11 15:08 -0800
Organization A noiseless patient Spider
Message-ID <m6d842$5st$1@dont-email.me> (permalink)

Show all headers | View raw


I'm trying to teach myself JavaFX and have hit a snag.  In the program 
below I add a ChangeListener to a TextField.  The Java8 method works 
fine, adding an anonymous ChangeListener class works fine but I can't 
create a class that implements ChangeListener and get it to compile.

The other question I have is why does the ObservableValue require a cast 
to StringProperty in both of the working examples and why do I declare 
it as <? extends String>?

Thanks,

knute...

import javafx.application.*;
import javafx.beans.*;
import javafx.beans.property.*;
import javafx.beans.value.*;
import javafx.event.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.*;

import java.time.*;

public class test99 extends Application {
     public static void main(String... args) {
         launch(args);
     }

     public void start(Stage primaryStage) {
         primaryStage.setTitle("test99");
         VBox root = new VBox(10);
         Scene scene = new Scene(root,320,240);

         TextField textField = new TextField();
         textField.setOnAction(ae ->
          System.out.println(textField.getText()));
 
textField.textProperty().addListener((observable,oldValue,newValue) -> {
          ((StringProperty)observable).setValue(newValue.toLowerCase());
         });

         /*
         class LengthListener<String> implements ChangeListener<String> {
             private final int length;

             public LengthListener(int length) {
                 this.length = length;
             }

             @Override public void changed(
              ObservableValue<? extends String> observable,
              String oldValue,String newValue) {
                 if (newValue.length() > length)
                     ((StringProperty)observable).setValue(
                      newValue.substring(0,length));
             }
         }
         textField.textProperty().addListener(new LengthListener(4));
         */

 
textField.textProperty().addListener((observable,oldValue,newValue) -> {
          ((StringProperty)observable).setValue(newValue.length() > 4 ?
          newValue.substring(0,4) : newValue);
         });

         /*
         textField.textProperty().addListener(new ChangeListener<String>() {
             @Override
             public void changed(ObservableValue<? extends String> 
observable,
              String oldValue,String newValue) {
                 ((StringProperty)observable).setValue(newValue.length() 
 > 4 ?
                  newValue.substring(0,4) : newValue);
             }
         });
         */

         textField.setText("Hello World!");

         root.getChildren().add(textField);
         primaryStage.setScene(scene);
         primaryStage.show();
     }
}


-- 

Knute Johnson

Back to comp.lang.java.programmer | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Problem with JavaFX ChangeListener? Knute Johnson <eternal@knutejohnson.com> - 2014-12-11 15:08 -0800
  Re: Problem with JavaFX ChangeListener? Arne Vajhøj <arne@vajhoej.dk> - 2014-12-11 18:36 -0500
    Re: Problem with JavaFX ChangeListener? Knute Johnson <eternal@knutejohnson.com> - 2014-12-11 15:53 -0800
  Re: Problem with JavaFX ChangeListener? Arne Vajhøj <arne@vajhoej.dk> - 2014-12-11 21:24 -0500
    Re: Problem with JavaFX ChangeListener? Knute Johnson <eternal@knutejohnson.com> - 2014-12-11 18:31 -0800
  Re: Problem with JavaFX ChangeListener? Roedy Green <see_website@mindprod.com.invalid> - 2014-12-31 18:23 -0800
    Re: Problem with JavaFX ChangeListener? Joerg Meier <joergmmeier@arcor.de> - 2015-01-01 12:39 +0100

csiph-web