1

私はfedora 14で開発したJavaスイングアプリケーションを持っています。アプリケーションはfedora 14で問題なく正常に動作しています。しかし、Windows 7で試したところ、正しく動作しませんでした。メニューバーには親メニュー項目が表示されますが、親メニュー項目をクリックしてもメニューは表示されず、タブ付きペインは黒で表示されます。システムがフリーズしているように見えます。これを widows XP で試してみたところ、グラフィックスで同じ結果が得られました。アプリケーションのエラーの原因を教えてください。

これが開始点のコードです。

public class SplashScreen extends javax.swing.JFrame {    
    String filePath = File.separator;
    static final Logger logger = Logger.getLogger(SplashScreen.class);
    /** Creates new form SplashScreen */
    public SplashScreen() {
        initComponents();
        setSize(400, 250);
        setLocationRelativeTo(null);

        try {
            initSetup();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void initSetup() throws Exception {
        new Thread(new Runnable() {

            @Override
            public void run() {
                Connection con = null;
                try {
                    Thread.sleep(1000);
                    con = JDBCConnectionPool.getInstance().checkOut();

                    if (con == null) {
                        lblMessage.setText("No database connection found!");
                        logger.debug("No database connection found!");
                    } else {
                        lblMessage.setText("Loading the system...");
                    }

                } catch (Exception ex) {
                    ex.printStackTrace();
                    JOptionPane.showMessageDialog(null, ex.getLocalizedMessage());
                    logger.debug(ex.getMessage());
                } finally {

                    if (con != null) {

                        try {
                            PropertyConfigurator.configure(this.getClass().getClassLoader().getResource("conf/log4j.properties"));
                            logger.info("Starting the system!");                            


                        } catch (Exception e) {
                            e.printStackTrace();
                            JOptionPane.showMessageDialog(null, e.getLocalizedMessage());
                        }
                        new Login().setVisible(true);
                        dispose();
                        JDBCConnectionPool.getInstance().checkIn(con);
                        return;
                    }
                    lblMessage.setText("Error occured... exiting the system");
                    try {
                        Thread.sleep(500);
                        System.exit(0);
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }

                }
            }
        }).start();
    }

ログイン画面

/** Creates new form Login */
    public Login() {

        userAuth = new UserAuthentication();
        initComponents();        
        add(pnlControlls);        
        addButtonListeners();
        addTextFieldListeners();
        setSize(400, 250);
        setTitle("Loging");
        //pack();

        setLocationRelativeTo(null);
    }


private void login() {        
        txtAlert.setText("");
        UserDTO user = new UserDTO();
        char[] p = txtPassword.getPassword();

        String pw = "";
        for (int i = 0; i < p.length; i++) {
            pw = pw + p[i];
        }

        user.setUsername(txtUsername.getText());
        user.setPassword(StringHasher.getInstance().getHash(pw));
        UserDTO authUser = userAuth.authenticate(user);

        if (authUser == null) {
            txtAlert.setText("<html>Internal error...</html>");
        } else {

            if (authUser.getIsActive() && authUser.isIsAvailable()) {
                Main main = Main.getInstance();
                CurrentUser.getInstance().setUserName(authUser.getUsername());
                Main.getInstance().setUserName(authUser.getUsername());
                Main.getInstance().setFullNameOnUserName(authUser.getFullName());
                Main.getInstance().prepareMenu();
                Main.getInstance().setVersion(System.getProperty("version"));
                main.setVisible(true);
                SwingUtilities.updateComponentTreeUI(main);
                this.dispose();

//here Main is the main user gui interface which user interacts with
            } else if (!authUser.getIsActive() && authUser.isIsAvailable()) {
                txtAlert.setText("<html>User account is inactive!</html>");
            } else {
                txtAlert.setText("<html>Username or password is incorrect, <br> please check again.</html>");
            }
        }
    }

アプリケーションを最小化および最大化すると、ドロップダウン メニューが表示されることがありますが、以下のようにメニューが重なって表示されます。

ここに画像の説明を入力

4

0 に答える 0