Я пытаюсь закончить эту программу: первый: пользователь запроса ввести номер мобильного телефона в окне JOptionPane второго: Показать сообщение «нажмите кнопку OK, чтобы отслеживать координаты ГПС (вход) третьих: ПОСЛЕ того, как пользователь нажимает OK, должен появиться всплывающий экран. 4th: Заставка должна закончить полностью, и после этого в окне JOptionPane должно появиться сообщение «Адрес, расположенный в координатах GPS:« плюс любой поддельный адрес, в который я вхожу. »порядка Splash Screen неправильно
Прямо сейчас заставка запускается во время всего остального и все не в порядке. Я хочу, чтобы экран заставки запускался после нажатия «ОК», а затем заканчивается и продолжается с окончательным сообщением JOptionPane. очень приветствуется !! FYI. Эта программа предназначена как фальшивая шутка.
public class SplashScreen extends JWindow {
static boolean isRegistered;
private static JProgressBar progressBar = new JProgressBar();
private static SplashScreen execute;
private static int count;
private static Timer timer1;
public SplashScreen() {
Container container = getContentPane();
container.setLayout(null);
JPanel panel = new JPanel();
panel.setBorder(new javax.swing.border.EtchedBorder());
panel.setBackground(Color.green);
panel.setBounds(10, 10, 348, 150);
panel.setLayout(null);
container.add(panel);
JLabel label = new JLabel("Tracking target GPS coordinates...");
label.setFont(new Font("Verdana", Font.BOLD, 14));
label.setBounds(15, 25, 280, 30);
panel.add(label);
progressBar.setMaximum(50);
progressBar.setBounds(55, 180, 250, 15);
container.add(progressBar);
loadProgressBar();
setSize(370, 215);
setLocationRelativeTo(null);
setVisible(true);
}
private void loadProgressBar() {
ActionListener al = new ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
count++;
progressBar.setValue(count);
System.out.println(count);
if (count == 300) {
createFrame();
execute.setVisible(false);
timer1.stop();
}
}
private void createFrame() throws HeadlessException {
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
};
timer1 = new Timer(50, al);
timer1.start();
}
public static void main(String[] args) {
execute = new SplashScreen();
String targetCell = JOptionPane.showInputDialog(null, "Enter "
+ "target cellphone number: ");
JOptionPane.showMessageDialog(null, "Click OK to "
+ "track the GPS coordinates of " + targetCell + "...");
JOptionPane.showMessageDialog(null, "The address located within "
+ "GPS coordinates is: " /** + "random fake address") **/);
}
};
Итак, не создавайте экземпляр 'SplashScreen' пока вам это не понадобится.Также помните, что Swing не является потокобезопасным и однопоточным. Это означает, что 1- вы должны только обновлять пользовательский интерфейс из контекста потока диспетчеризации событий и 2- вы не должны блокировать EDT с помощью задачи с большим сроком – MadProgrammer