0

質問が 1 つあります。GUI は初めてなので、他の方法を使用してウィンドウに要素を追加したい場合や、if ステートメントを使用してエラーが発生しないが表示されない場合に助けが必要です。コードが聞こえます。これはプログラム全体ではなく、これだけが問題であるため、Javaで作業している問題をマークしました

import java.awt.*;  

import java.awt.event.*;

import javax.swing.*;

public class Gui extends JFrame{

private JTextField usernameTF;
private JPasswordField passwordField;
private String username,password;
private JRadioButton A,B,C,D,F;

//private JComboBox box;
private JLabel logo,errorPic,promt;
private JButton logIn;
private boolean value;
private Apples function= new Apples();

public Gui(){
    super ("Awsome Progrma");
    setLayout(new FlowLayout());

    Icon errorIcon = new  ImageIcon(getClass().getResource("wrong.png"));
    errorPic = new JLabel(errorIcon);

    usernameTF = new JTextField(10);
    usernameTF.setToolTipText("Enter your user name hear");
    add(usernameTF);

    passwordField = new JPasswordField(10);
    passwordField.setToolTipText("Enter your password hear");
    add(passwordField);

    logIn = new JButton("Log IN");
    add(logIn);

    usernameTF.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent event){
                    username = event.getActionCommand();
                    password = passwordField.getText();
                    value = function.chack(username,password);
                    if (value == true){add(errorPic);}                      // this is a problem JLabel dosn't show up in my window 
                }
            }
        );
    passwordField.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent event){
                    username = usernameTF.getText();;
                    password = event.getActionCommand();
                    value = function.chack(username,password);
                    if (value == true){add(errorPic);}                          // this is a problem JLabel dosn't show up in my window 
                }
            }
        );
    logIn.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent event){
                    username = usernameTF.getText();
                    password = passwordField.getText();
                    value = function.chack(username,password);
                    if (value == true){add(errorPic);}                                  // this is a problem JLabel dosn't show up in my window 
                    }
                }
            );
    }

}
4

1 に答える 1

2

表示されない唯一の GUI 要素はJlabel errorPic. これは、コンポーネントが追加された後にコンテナーを検証する必要があるためです。電話する必要があります:

revalidate();
repaint();

を追加した後JLabel。より良いアプローチは、JLabelコンポーネントを に追加するときに画像なしで を追加しJFrame、後で単純に呼び出しJLabel.setIconてラベルを更新することです。


いくつかの補足事項:

  • 延長しないでくださいJFrame。代わりに、ウィンドウ コンポーネントのインスタンスを直接作成します。
  • JPassword.getText非推奨ですJPassword.getPassword代わりに使用する方が安全です。
  • アプリケーションの起動時に初期スレッドを使用することを検討してください。
于 2013-01-27T21:32:07.867 に答える