Ich bekomme 1&1 einfach nicht zusammen. Es geht noch mal um mein IconView in der TableView. Dieses habe ich erfolgreich in dem Objekt Fahrer abgelegt und wird auch wie gewünscht in der TableView angezeigt. Zuerst mit dem Bild Ampel_Rot. Dann zu Startzeit ändere ich das Image auf Ampel_Grün. Jetzt möchte ich, dass das IconView klickbar wird. Entsprechende Beispiele aus dem Internet mit einem Button habe ich versucht anzuwenden, aber leider ohne Erfolg, da das Button-Column über den Code erzeugt wurde. Vielleicht kann mit jemand bei meinem Code helfen. Die GUI erstelle ich durch eine FXML-Datei.
Grüße MB
[CODE lang="java" title="Klasse Fahrer Ausschnitt"]public class Fahrer {
private ImageView stopAgainImage;
Image stopAgainRedBild = new Image("data/Icon_Ampel_rot.png");
Image stopAgainGreenBild = new Image("data/Icon_Ampel_gruen.png");
public Fahrer (String vorName, String nachName, String geschlecht, int jahrGang, String mitGlied) {
this.stopAgainImage = new ImageView();
this.stopAgainImage.setImage(stopAgainRedBild);
}
public ImageView getStopAgainImage() {
return stopAgainImage;
}
public void setStopAgainImage(ImageView stopAgainImage) {
this.stopAgainImage = stopAgainImage;
}
public void setStopAgainGreenImage() {
this.stopAgainImage.setImage(stopAgainGreenBild);
}
public void setStopAgainRedImage() {
this.stopAgainImage.setImage(stopAgainRedBild);
}
[/CODE]
[CODE lang="java" title="Klasse ZeitfahrenController Ausschnitt"]@FXML private TableColumn<Fahrer, ImageView> zfStopAgainTC;
zfStopAgainTC.setCellValueFactory(new PropertyValueFactory<>("stopAgainImage"));
zeitfahrListeTV.setItems(mainStarterListe);
tempFahrer.setStopAgainGreenImage();
[/CODE]
[CODE lang="java" title="Fehlversuch Callback"] zfStopAgainTC.setCellValueFactory(new PropertyValueFactory<>("stopAgainImage"));
Callback<TableColumn<Fahrer, Void>, TableCell<Fahrer, Void>> cellFactory = new Callback<TableColumn<Fahrer, Void>, TableCell<Fahrer, Void>>(){
@Override
public TableCell<Fahrer, Void> call(TableColumn<Fahrer, Void> arg0) {
System.out.println("TEST");
return null;
}
};[/CODE]
[CODE lang="java" title="Fehlversuch EventHandler"] zfStopAgainTC.setCellValueFactory(new PropertyValueFactory<>("stopAgainImage"));
for (Fahrer tempFahrer : application.MainModel.mainStarterListe) {
tempFahrer.getStopAgainImage().setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
System.out.println("Test");
}
});
}[/CODE]
Grüße MB
[CODE lang="java" title="Klasse Fahrer Ausschnitt"]public class Fahrer {
private ImageView stopAgainImage;
Image stopAgainRedBild = new Image("data/Icon_Ampel_rot.png");
Image stopAgainGreenBild = new Image("data/Icon_Ampel_gruen.png");
public Fahrer (String vorName, String nachName, String geschlecht, int jahrGang, String mitGlied) {
this.stopAgainImage = new ImageView();
this.stopAgainImage.setImage(stopAgainRedBild);
}
public ImageView getStopAgainImage() {
return stopAgainImage;
}
public void setStopAgainImage(ImageView stopAgainImage) {
this.stopAgainImage = stopAgainImage;
}
public void setStopAgainGreenImage() {
this.stopAgainImage.setImage(stopAgainGreenBild);
}
public void setStopAgainRedImage() {
this.stopAgainImage.setImage(stopAgainRedBild);
}
[/CODE]
[CODE lang="java" title="Klasse ZeitfahrenController Ausschnitt"]@FXML private TableColumn<Fahrer, ImageView> zfStopAgainTC;
zfStopAgainTC.setCellValueFactory(new PropertyValueFactory<>("stopAgainImage"));
zeitfahrListeTV.setItems(mainStarterListe);
tempFahrer.setStopAgainGreenImage();
[/CODE]
[CODE lang="java" title="Fehlversuch Callback"] zfStopAgainTC.setCellValueFactory(new PropertyValueFactory<>("stopAgainImage"));
Callback<TableColumn<Fahrer, Void>, TableCell<Fahrer, Void>> cellFactory = new Callback<TableColumn<Fahrer, Void>, TableCell<Fahrer, Void>>(){
@Override
public TableCell<Fahrer, Void> call(TableColumn<Fahrer, Void> arg0) {
System.out.println("TEST");
return null;
}
};[/CODE]
[CODE lang="java" title="Fehlversuch EventHandler"] zfStopAgainTC.setCellValueFactory(new PropertyValueFactory<>("stopAgainImage"));
for (Fahrer tempFahrer : application.MainModel.mainStarterListe) {
tempFahrer.getStopAgainImage().setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
System.out.println("Test");
}
});
}[/CODE]