2017-10-23 4 views
-1

Ich habe vor kurzem eine einfache JavaFX GUI implementiert. Ich habe eine Klasse, die TableView erweitert, das auf einen ImageView (Konstruktorparameter) verweist. Sobald eine Zeile ausgewählt ist. Das Programm erhält die Objektzeichenfolge der Zeile. Was dann dem ImageView zugewiesen wird.Zugriff auf ein JavaFX ImageView von einer anderen Klasse

Dies ist der ursprüngliche Code, der in der Hauptmethode arbeitete.

enter image description here

 tableView.getSelectionModel().selectedItemProperty().addListener((obs, oldSelection, newSelection) -> { 
     if (newSelection != null) { 
      String imageID = tableView.getSelectionModel().getSelectedItem().IMAGE_ID; 

      try{ 
      Image image = new Image(getClass().getResource("/resources/fellowshipcards/"+imageID).toURI().toString()); 
       cardImageView.setImage(image); 
      }catch(Exception ex){} 

     } 
    }); 

Aber wenn ich versuche, es als Parameter hinzuzufügen - ein Fehler auftritt. Auf die ImageView kann nicht zugegriffen werden. Einfach das ImageView.setImage (Bild) wird nicht ausgeführt.

public TableViewCenter(ImageView cardImageView){ 

....

   try{ 
       Image image = new Image(getClass().getResource("/resources/fellowshipcards/"+imageID).toURI().toString()); 
       System.out.println(imageID); 
       cardImageView.setImage(image); 
      }catch(Exception ex){} 

Sobald die Zeile ausgewählt ist, exectes das System alles, ohne die .setImage (image) Funktion.

Es könnte sich um ein Problem mit dem Oszilloskop handeln oder es ist JavaFX, das auf verschiedene Komponentenprobleme zugreift.

+0

Wie setzen Sie cardImageView aus der Tabellenansicht aus? Ist das ImageView ein Teil Ihrer neuen Tabellenansicht? falls ja - Sie benötigen wahrscheinlich etwas wie tableView.getCardImageView(). set() ... –

+0

In der Hauptmethode -> ImageView imageView = new ImageView(); -> MyTableView myTableView = neue myTableView (imageView); MyTableView-Instanz wird in HBox mit ImageView eingefügt. Ich habe versucht, den Code vom Haupt zu trennen. Und make MyTableView-Objekt (Practicing OOP) –

+0

Ich verstehe die Struktur nicht. Kannst du deinen ganzen Code dort ablegen? –

Antwort

0

Ich habe eine Lösung für das Problem gefunden! Die Implementierung des Listeners sollte in der Klasse deklariert werden, in der sich das ImageView befindet.

Verwandte Themen