Ошибка с конфигурацией экрана-заставки Java Swing

Во-первых, я не очень разбираюсь в Java Swing, поэтому не обращайте внимания на свои ошибки. Теперь переходим к проблеме. Я пытаюсь реализовать заставку в своем настольном приложении. так что я успешно сделал небольшой дизайн заставки.

Вот код:

Заставка:

package com.openbravo.pos.forms;
public class demoform1 extends javax.swing.JFrame {

public demoform1() {
    initComponents();
    System.out.println("demoform1........");
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate = "collapsed" desc = "Generated Code">                          
private void initComponents() {

    filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 0), new java.awt.Dimension(32767, 32767));
    defaultpanel = new javax.swing.JPanel();
    title = new java.awt.Label();
    loading = new java.awt.Label();
    loadingnum = new javax.swing.JProgressBar();

    setUndecorated(true);

    defaultpanel.setBackground(new java.awt.Color(1, 231, 238));
    defaultpanel.setForeground(new java.awt.Color(1, 1, 1));
    defaultpanel.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

    title.setAlignment(java.awt.Label.CENTER);
    title.setFont(new java.awt.Font("URW Chancery L", 3, 36)); // NOI18N
    title.setForeground(new java.awt.Color(254, 254, 254));
    title.setName("agile"); // NOI18N
    title.setText("Agile infoways pvt. ltd.");

    loading.setAlignment(java.awt.Label.CENTER);
    loading.setFont(new java.awt.Font("URW Chancery L", 3, 24)); // NOI18N
    loading.setForeground(new java.awt.Color(254, 254, 254));
    loading.setName(""); // NOI18N
    loading.setText("99%");

    loadingnum.setBackground(new java.awt.Color(247, 253, 22));
    loadingnum.setForeground(new java.awt.Color(1, 1, 1));

    javax.swing.GroupLayout defaultpanelLayout = new javax.swing.GroupLayout(defaultpanel);
    defaultpanel.setLayout(defaultpanelLayout);
    defaultpanelLayout.setHorizontalGroup(
        defaultpanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(defaultpanelLayout.createSequentialGroup()
            .addGap(107, 107, 107)
            .addComponent(title, javax.swing.GroupLayout.PREFERRED_SIZE, 490, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(114, Short.MAX_VALUE))
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, defaultpanelLayout.createSequentialGroup()
            .addGap(0, 0, Short.MAX_VALUE)
            .addComponent(loading, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(294, 294, 294))
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, defaultpanelLayout.createSequentialGroup()
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(loadingnum, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
            .addGap(277, 277, 277))
    );
    defaultpanelLayout.setVerticalGroup(
        defaultpanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(defaultpanelLayout.createSequentialGroup()
            .addGap(62, 62, 62)
            .addComponent(title, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(67, 67, 67)
            .addComponent(loading, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addComponent(loadingnum, javax.swing.GroupLayout.DEFAULT_SIZE, 33, Short.MAX_VALUE)
            .addGap(64, 64, 64))
    );

    title.getAccessibleContext().setAccessibleName("loading");
    loading.getAccessibleContext().setAccessibleName("loading");
    loadingnum.getAccessibleContext().setAccessibleName("loadingnumber");
    loadingnum.getAccessibleContext().setAccessibleDescription("");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(defaultpanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(defaultpanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
    );

    setBounds(0, 0, 711, 379);
}// </editor-fold>                        
// Variables declaration - do not modify                     
public javax.swing.JPanel defaultpanel;
private javax.swing.Box.Filler filler1;
public java.awt.Label loading;
public javax.swing.JProgressBar loadingnum;
public java.awt.Label title;
// End of variables declaration                   
}

Код, в котором я вызываю свой экран-заставку в основном корневом приложении:

        demoform1 demo1 = new demoform1();
        try {
            demo1.setVisible(true);
            for (int i = 0; i <= 100; i++) {
                Thread.sleep(40);
                demo1.loading.setText(Integer.toString(i) + "%");
                demo1.loadingnum.setValue(i);
                if (i == 100) {
                    demo1.setVisible(false);
                    demo1 = null;
                }
            }
        } catch (Exception e) {
      }

поэтому проблема в том, что мой экран-заставка работает нормально, но принятый вывод не приходит.

ожидаемый экран-заставка:

Ошибка с конфигурацией экрана-заставки Java Swing

Текущий экран-заставка:

Ошибка с конфигурацией экрана-заставки Java Swing

Если кто-то может помочь, будет приятно.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
133
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я вижу, что вы используете много классов Swing, когда вы могли бы сделать этот экран-заставку, просто используя JavaFX и Scene Builder для создания экрана.

Вы можете использовать предварительный загрузчик, проверьте это: https://docs.oracle.com/javafx/2/deployment/preloaders.htm

Идея состоит в том, чтобы сделать заставку, а затем:

public class Main {
   public static void main(String[] args) {
      LauncherImpl.launchApplication(Main.class, SplashScreen.class, args);
   }
}

Используя свой код, вы можете сделать что-то вроде этого:

JWindow window = new JWindow();

        demoform1 df = new demoform1();

        window.getContentPane().add(df.getContentPane());

        window.setBounds(600,600,600,600);
        window.setLocationRelativeTo(null);

        window.setVisible(true);
        try {
             for (int i = 0; i <= 100; i++) {
                    Thread.sleep(40);
                    df.loading.setText(Integer.toString(i) + "%");
                    df.loadingnum.setValue(i);
                    if (i == 100) {
                        window.setVisible(false);
                        JFrame frame = new JFrame();
                        frame.add(new JLabel("It Worked!!!!!"));
                        frame.setVisible(true);
                        frame.setSize(300,100);
                        window.dispose();
                    }
                }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

Это создаст эффект загрузки, а затем покажет простой JFrame с простым сообщением.

Я не эксперт по Swing, но надеюсь, что это вам поможет.

Другие вопросы по теме