F
friteuse85
Gast
hallöchen,
ich wollte mir einen splashscreen mit einem fortschrittbalken basteln. hier mal das code gerüst:
so wies da steht funktionierts wie's soll, aber das problem ist, das ich es nicht über invoke later starten kann (wie man ja eigentlich sollte). entweder wird dann die progressbar erst am ende auf 100% upgedated, sie erscheint gar nicht ...
hat jemand einen tipp wie man das verbessern könnte (wie gesagt funktionieren tuts aber eben...)
thxxxxxxxxxxxxxx
ich wollte mir einen splashscreen mit einem fortschrittbalken basteln. hier mal das code gerüst:
Code:
package splashscreen;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JWindow;
public class SplashScreenTest {
static int count = 0;
static SplashScreen screen;
static boolean useInvokeLater = false;
public static void main(String[] args) {
if(!useInvokeLater){
createSplash();
showMainGUI();
}
else{
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createSplash();
}
});
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
showMainGUI();
}
});
}
}
public static void createSplash(){
screen = new SplashScreen();
screen.showSplash();
screen.pack();
screen.setVisible(true);
System.out.println("Splash created");
}
public static void showMainGUI() {
// nun das eigentliche gui aufbauen und dabei die progressBar updaten
int i = 0;
JFrame frame = new JFrame();
JPanel panel = new JPanel(new FlowLayout());
frame.getContentPane().add(panel);
while(i<10){
panel.add(new JLabel("Shit happpppenz!"));
screen.progressBar.setValue(i* 10);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i++;
}
frame.pack();
frame.setVisible(true);
}
}
class SplashScreen extends JWindow {
public JProgressBar progressBar;
public void showSplash() {
setLocationRelativeTo(null);
JPanel content = (JPanel) getContentPane();
progressBar = new JProgressBar(0, 100);
add(progressBar, BorderLayout.CENTER);
}
}
so wies da steht funktionierts wie's soll, aber das problem ist, das ich es nicht über invoke later starten kann (wie man ja eigentlich sollte). entweder wird dann die progressbar erst am ende auf 100% upgedated, sie erscheint gar nicht ...
hat jemand einen tipp wie man das verbessern könnte (wie gesagt funktionieren tuts aber eben...)
thxxxxxxxxxxxxxx