特殊的GUI问题

时间:2014-07-05 11:09:40

标签: java swing user-interface

出于一些尴尬的原因,每当我在actionPerformed()内部将我想要的帧设置为Visible(true)时,它会打印出框架,标题但没有组件,也没有我之前选择的颜色。

但是,当我在当前帧的顶部将可见性设置为true时(无需按下按钮),它可以正常工作。

这是我正在使用的框架:

enter image description here

但是,一旦我在actionPerformed:

中将可见性设置为true,就会打印出来

enter image description here

我已经在actionPerformed()中设置了另一个框架(主客户端框架),并且工作正常。这是我第一次遇到这个问题,所以我真的不确定是什么原因造成的。

我还假设可能是因为在actionPerformed期间客户端必须连接到特定的服务器细节,但是然后再次,第一帧被实例化时,Frame对象被实例化,所以它应该是很好..

这是我的actionPerformed(),抱歉凌乱的代码:

JButton connectButton = new JButton("Connect");
    connectButton.setBackground(SystemColor.activeCaption);
    connectButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {

            //If any of the first three fields are empty, turn them red
            if(serverField.getText().equalsIgnoreCase("")){
                lblSever.setForeground(new Color(240, 128, 128));
            }
            if(channelField.getText().equalsIgnoreCase("")){
                lblChannel.setForeground(new Color(240, 128, 128));
            }
            if(nicknameField.getText().equalsIgnoreCase("")){
                lblNickname.setForeground(new Color(240, 128, 128));
            }

            //Set Waiting Connection frame to true
            wc.setVisible(true);

            //None of the first three fields are empty
            if(!serverField.getText().equalsIgnoreCase("")
                    && !channelField.getText().equalsIgnoreCase("")
                    && !nicknameField.getText().equalsIgnoreCase("")){

                //Set current frame visibility to false
                setVisible(false);

                //Set connection details
                Main.bot.setServer(serverField.getText());
                Main.bot.setChannel(channelField.getText());
                Main.bot.setNickname(nicknameField.getText());
                Main.bot.setPassword(formattedTextField.getText());

                //Connect to server and channel
                try{
                    Main.bot.connect(serverField.getText());
                    Main.bot.changeNick(nicknameField.getText());
                    Main.bot.joinChannel(channelField.getText());
                }catch(Exception e){ //Catch all errors, if invalid server is thrown, close Waiting Connection frame
                    InvalidServer error = new InvalidServer();
                    e.printStackTrace();
                    wc.setVisible(false);
                    wc.dispose();
                    error.setVisible(true);
                }

                setVisible(false);

                //Custom Timer class
                Timer runTime = new Timer();

                while(runTime.getTimeElapsed() < 5000){
                    //To-Do
                }
                wc.setVisible(false);

                //Instantiate next frame
                MainFrame mainFrame = new MainFrame();
                mainFrame.setVisible(true);

                //Kill current frame
                dispose();
            }
        }
        });

1 个答案:

答案 0 :(得分:2)

一些要点: