Hallo,
ich habe das folgende Problem:
ich habe ein eigenes Tool geschrieben, welches als Komponente einen Mini-Browser (WebView) sowie eine Tabelle mit Werten hat (TableView).
Alles funktioniert perfekt bis auf eine Sache:
Wenn ich die Columns der Tabelle anklicke, dann werden ja automatisch die Werte darunter sortiert...schön und gut aber dann funktioniert eine andere Funktion nicht.
Der Mini Browser hört auf verschiedene Events um zu erkennen ob ein enthaltender Link geklickt wurde:
--> Es wird auf einen Klick auf einen Link gewartet und dann wird eine Reihe von Animationen gestartet...die ersten zwei Translations funktionieren auch, nur bei der 3ten gibt es einen Fehler
Also an der Stelle:
Hier erscheint dieser Fehler:
Das Komische ist, dass es ganz normal und richtig klappt wenn man die Columns nicht anklickt :/ Ich kann sogar einzelne Zeilen anklicken und auswählen, selbst dann klappen alle Animationen richtig...NUR wenn ich eine Column anklicke ist irgendetwas anders
Jemand eine Idee?
ich habe das folgende Problem:
ich habe ein eigenes Tool geschrieben, welches als Komponente einen Mini-Browser (WebView) sowie eine Tabelle mit Werten hat (TableView).
Alles funktioniert perfekt bis auf eine Sache:
Wenn ich die Columns der Tabelle anklicke, dann werden ja automatisch die Werte darunter sortiert...schön und gut aber dann funktioniert eine andere Funktion nicht.
Der Mini Browser hört auf verschiedene Events um zu erkennen ob ein enthaltender Link geklickt wurde:
Code:
browser.getEngine().setOnStatusChanged(new EventHandler<WebEvent<String>>() {
@Override
public void handle(WebEvent<String> webEvent) {
// in browser-view don't listen for anything
if(webEvent.getData() != null){
if (webEvent.getData().equals("https://www.elster.de/elsterweb/svs") && !browserView) {
// mouse clicked...
browser.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
if(browser.getEngine().getLoadWorker().isRunning()){
proceedButton.setDisable(true);
animateOpenBrowser(table);
}
}
private void animateOpenBrowser(final TableView<Server> table) {
// minimize table
ResizeHeightTranslation tableAnim = new ResizeHeightTranslation(Duration.millis(300), table, 0);
tableAnim.play();
// minimize browser
ResizeHeightTranslation labelAnim = new ResizeHeightTranslation(Duration.millis(300), browserBox, 0);
labelAnim.play();
// completely hide the table and the browser
browserBox.setMaxHeight(0);
table.setMaxHeight(0);
proceedButton.setText("Zurück");
browserView = true;
tableAnim.setOnFinished(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
// enlarge the browser window for better access during surfing
table.setVisible(false);
ResizeHeightTranslation labelAnim = new ResizeHeightTranslation(Duration.millis(300), browserBox, 500);
labelAnim.play();
labelAnim.setOnFinished(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
proceedButton.setDisable(false);
}
});
}
});
}
});
} else {
browser.setOnMouseClicked(null);
}
}
}
});
--> Es wird auf einen Klick auf einen Link gewartet und dann wird eine Reihe von Animationen gestartet...die ersten zwei Translations funktionieren auch, nur bei der 3ten gibt es einen Fehler
Also an der Stelle:
Code:
table.setVisible(false);
ResizeHeightTranslation labelAnim = new ResizeHeightTranslation(Duration.millis(300), browserBox, 500);
labelAnim.play();
labelAnim.setOnFinished(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
proceedButton.setDisable(false);
}
});
Hier erscheint dieser Fehler:
Code:
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at com.sun.javafx.scene.control.skin.TableViewSkinBase.layoutChildren(TableViewSkinBase.java:745)
at javafx.scene.control.Control.layoutChildren(Control.java:578)
at javafx.scene.Parent.layout(Parent.java:1087)
at javafx.scene.Parent.layout(Parent.java:1093)
at javafx.scene.Parent.layout(Parent.java:1093)
at javafx.scene.Scene.doLayoutPass(Scene.java:552)
at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2397)
at com.sun.javafx.tk.Toolkit.lambda$runPulse$2(Toolkit.java:398)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:397)
at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:424)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:518)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:498)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulseFromQueue(QuantumToolkit.java:491)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$11(QuantumToolkit.java:319)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$3(WinApplication.java:177)
at java.lang.Thread.run(Thread.java:748)
Das Komische ist, dass es ganz normal und richtig klappt wenn man die Columns nicht anklickt :/ Ich kann sogar einzelne Zeilen anklicken und auswählen, selbst dann klappen alle Animationen richtig...NUR wenn ich eine Column anklicke ist irgendetwas anders
Jemand eine Idee?