1

GUI にボタン、ラベル、またはテキスト フィールドが表示されないのはなぜですか?

すべてのセットアップが完了したと思いますが、実行すると、フレームのみが表示され、コンテンツは何も表示されません。

package BasicGame;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class Gui extends JFrame{
    private static final long serialVersionUID = 1L;
    private JLabel label;
    private JTextField textField;
    private JButton button;
    private buttonHandler bHandler;

    public Gui(){
        setTitle("Basic Gui");
        setResizable(false);
        setSize(500, 200);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);    

        Container pane = getContentPane();
        pane.setLayout(null);


        button = new JButton("button");
        button.setBounds(50, 60, 50, 70);
        bHandler = new buttonHandler();
        button.addActionListener(bHandler);

        label = new JLabel("Hello", SwingConstants.RIGHT);
        label.setBounds(50, 60, 50, 70);

        textField = new JTextField(10);
        textField.setBounds(50, 60, 50, 70);

        pane.add(button);
        pane.add(label);
        pane.add(textField);

    }

    public class buttonHandler implements ActionListener{
        public void actionPerformed(ActionEvent e){
            System.exit(0);
        }
    }

    @SuppressWarnings("unused")
    public static void main(String[] args){
        Gui gui = new Gui();
    }

}
4

1 に答える 1

3

setVisible()コンストラクターの最後に移動します。セットアップ後にすべてのコンポーネントを追加するJFrameと、メイクが表示されるため、変更は表示されません。

これJFrameにより、すべてのコンポーネントが表示されます。

public Gui(){
    setTitle("Basic Gui");
    setResizable(false);
    setSize(500, 200);
    setDefaultCloseOperation(EXIT_ON_CLOSE);    

    Container pane = getContentPane();
    pane.setLayout(null);


    button = new JButton("button");
    button.setBounds(50, 60, 50, 70);
    bHandler = new buttonHandler();
    button.addActionListener(bHandler);

    label = new JLabel("Hello", SwingConstants.RIGHT);
    label.setBounds(50, 60, 50, 70);

    textField = new JTextField(10);
    textField.setBounds(50, 60, 50, 70);

    pane.add(button);
    pane.add(label);
    pane.add(textField);
    setVisible(true); // Move it to here
}

setVisibleステートメントを移動してコードをコンパイルする前後のフレームの様子を次に示します。

前:

ここに画像の説明を入力

後:

ここに画像の説明を入力

于 2013-03-18T23:20:50.013 に答える