Czy chciałbym zrealizować następujące animację ładowania z Java Swing:Java Swing Ładowanie Animacja
Krąg ma się kręcić w prawo.
Jaki byłby najlepszy sposób na zrobienie tego?
Dziękuję bardzo.
Czy chciałbym zrealizować następujące animację ładowania z Java Swing:Java Swing Ładowanie Animacja
Krąg ma się kręcić w prawo.
Jaki byłby najlepszy sposób na zrobienie tego?
Dziękuję bardzo.
Możesz użyć klasy Animated Icon, aby utworzyć własną animację przy użyciu istniejącej ikony.
Można to narysować za pomocą niestandardowego komponentu lub niestandardowej ikony, używając standardowych połączeń Java2D
. Dla mnie wygląda to jak Arc2D
z dość grubym BasicStroke
narysowanym za pomocą GradientPaint
.
Alternatywnie, wyeksportuj ramki z Inkscape (lub innego programu graficznego) i załaduj je jako obrazy.
Po prostu użyj ImageIcon i animowanego gif. zobacz setImageObserver w ImageIcon.
Ładowanie ikon można wykonać za pomocą różnych generatorów internetowych, takich jak AjaxLoad.
BARDZO ŁADNE! przydatny! – drzymala
Mam nadzieję, że nie jest za późno na to.
udało mi się uzyskać animowany gif wewnątrz moich JPanel w ten sposób:
private JPanel loadingPanel() {
JPanel panel = new JPanel();
BoxLayout layoutMgr = new BoxLayout(panel, BoxLayout.PAGE_AXIS);
panel.setLayout(layoutMgr);
ClassLoader cldr = this.getClass().getClassLoader();
java.net.URL imageURL = cldr.getResource("img/spinner.gif");
ImageIcon imageIcon = new ImageIcon(imageURL);
JLabel iconLabel = new JLabel();
iconLabel.setIcon(imageIcon);
imageIcon.setImageObserver(iconLabel);
JLabel label = new JLabel("Loading...");
panel.add(iconLabel);
panel.add(label);
return panel;
}
niektóre punkty tego podejścia:
1. Plik obrazu jest w słoiku;
2. ImageIO.read() zwraca obraz BufferedImage, który nie aktualizuje ImageObserver;
3. Inną alternatywą dla znajdowania obrazów dołączonych do pliku JAR jest pobranie programu ładującego klasy Java, kodu, który załadował program, w celu pobrania plików. Wie, gdzie są rzeczy.
W ten sposób udało mi się uzyskać animowany gif w moim JPanelu i zadziałało jak czar.
animowany gif nie jest opcją, ponieważ nie ma dobrych i gładkich przezroczystych efektów. Spinner musi być przeźroczysty i mieć 100% przezroczystego tła, którego gify nie obsługują, bez brzydkiej animacji i piksela. Działa tylko dla prostokątnych granic i bez blaknięcia między obiektami. Więc ... jak to zrobić poprawnie? APNG może to zrobić, ale oczywiście Java nie obsługuje jej z użyciem bibliotek. –
Zamiana pęczków sprite'ów może na to wpłynąć. Oczywiście ładowanie musiałoby odbywać się w wątku tła, takim jak dostarczone przez SwingWorker. –
Zobacz także [Q & A] (http://stackoverflow.com/questions/6238037/how-do-i-align-this-text-correctly). – trashgod