Chciałbym utworzyć w swojej aplikacji coś co będzie splash screenem. Wyszukałem kilka artykułów, ale niestety nie potrafię sobie z tym poradzić.
Chciałbym w najprostszy sposób wyświetlić zwykły obrazek przed odpaleniem okna głównego. Robiłem to na zasadzie wstawienia w okno obrazka. Następnie wyświetlenie okna, później sleep(3000), kolejno wyświetlenie okna głównego i zamknięcie okna ze splashscreenem. Jednak dało to taki efekt że przez pierwsze 3 sekundy widzę tylko w pasku że okno ze splashscreenem się pojawiło (okna nie widzę), po 3 sekundach odpala się okno główne, a to ze splashem ginie.
- Rejestracja:ponad 14 lat
- Ostatnio:około 3 lata
- Postów:211
0
- Rejestracja:ponad 14 lat
- Ostatnio:około 3 lata
- Postów:211
0
Hmm tak właśnie w wątku Javy. Ogólnie nie programuję w Javie, a jeśli chodzi o JavaFX to jest mój pierwszy program. Mógłbyś jakoś schematycznie podać jak najłatwiej to zrobić?
- Rejestracja:ponad 14 lat
- Ostatnio:około 3 lata
- Postów:211
0
Stworzyłem projekt i do tego zaznaczyłem aby stworzyło coś takiego jak preloader. Jakoś działa ale nie wiem czy jest to poprawnie zrobione.
package javafxapplication6.preloader;
import static java.lang.Thread.sleep;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Preloader;
import javafx.application.Preloader.ProgressNotification;
import javafx.application.Preloader.StateChangeNotification;
import javafx.scene.Scene;
import javafx.scene.control.ProgressBar;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
/**
* Simple Preloader Using the ProgressBar Control
*
* @author Łukasz
*/
public class JavaFXApplication6_Preloader extends Preloader {
ProgressBar bar;
Stage stage;
private Scene createPreloaderScene() {
StackPane root = new StackPane();
ImageView img = new ImageView("https://www.google.pl/logos/doodles/2014/world-cup-2014-12-5204175918989312.2-hp.gif");
root.getChildren().add(img);
bar = new ProgressBar();
BorderPane p = new BorderPane();
p.setCenter(bar);
return new Scene(root, 500, 150);
}
@Override
public void start(Stage stage) throws Exception {
this.stage = stage;
stage.initStyle(StageStyle.TRANSPARENT);
stage.setScene(createPreloaderScene());
stage.show();
}
@Override
public void handleStateChangeNotification(StateChangeNotification scn) {
if (scn.getType() == StateChangeNotification.Type.BEFORE_START) {
stage.hide();
}
}
@Override
public void handleProgressNotification(ProgressNotification pn) {
try {
sleep(2000);//tutaj wrzuciłem sleep
} catch (InterruptedException ex) {
Logger.getLogger(JavaFXApplication6_Preloader.class.getName()).log(Level.SEVERE, null, ex);
}
bar.setProgress(pn.getProgress());
}
}
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.