java - 简单的JFrame程序但看不到JTextfield

标签 java swing jframe jpanel jtextfield

我正在尝试自学 Swing。 我正在玩一个玩具程序,要求用户输入他们的名字。我将 JLabel 和 JTextfield 放入 JPanel 中,用户可以在其中输入他们的姓名并提交。然而,我的 JTextfield 被压扁并且不可见,我无法让它显示(我尝试过“setSize”但无济于事)。

Invisible JTextField

这是我的代码:

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class NamePrompt extends JFrame{


    private static final long serialVersionUID = 1L;

    String name;

    public NamePrompt(){

        setLayout(new BorderLayout());

        JLabel enterYourName = new JLabel("Enter Your Name Here:");
        JTextField textBoxToEnterName = new JTextField();
        textBoxToEnterName.setSize(40, 10);
        JPanel panelTop = new JPanel();
        panelTop.add(enterYourName);
        panelTop.add(textBoxToEnterName);

        JButton submit = new JButton("Submit");
        submit.addActionListener(new SubmitButton());
        JPanel panelBottom = new JPanel();
        panelBottom.add(submit);

        //Add panelTop to JFrame
        add(panelTop, BorderLayout.NORTH);
        add(panelBottom, BorderLayout.SOUTH);

        //JFrame set-up
        setTitle("Name Prompt Program");
        setSize(300, 150);
        setLocationRelativeTo(null);


    }



    public static void main(String[] args) {
        NamePrompt promptForName = new NamePrompt();
        promptForName.setVisible(true);


    }

最佳答案

JTextField textBoxToEnterName = new JTextField(20);

参见new JTextField(columns)进行解释。例如

NamePrompt

import java.awt.BorderLayout;
import javax.swing.*;

public class NamePrompt extends JFrame{

    private static final long serialVersionUID = 1L;

    String name;

    public NamePrompt(){

        setLayout(new BorderLayout());

        JLabel enterYourName = new JLabel("Enter Your Name Here:");
        JTextField textBoxToEnterName = new JTextField(21);
        //textBoxToEnterName.setSize(40, 10);
        JPanel panelTop = new JPanel();
        panelTop.add(enterYourName);
        panelTop.add(textBoxToEnterName);

        JButton submit = new JButton("Submit");
        //submit.addActionListener(new SubmitButton());
        JPanel panelBottom = new JPanel();
        panelBottom.add(submit);

        //Add panelTop to JFrame
        add(panelTop, BorderLayout.NORTH);
        add(panelBottom, BorderLayout.SOUTH);

        //JFrame set-up
        setTitle("Name Prompt Program");
        //setSize(300, 150);
        pack();
        setLocationRelativeTo(null);
    }

    public static void main(String[] args) {
        NamePrompt promptForName = new NamePrompt();
        promptForName.setVisible(true);
    }
}

关于java - 简单的JFrame程序但看不到JTextfield,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13713435/

相关文章:

java - 更改在 Eclipse 中运行哪个 main()

java - Bnd 具有重复版本的导入包

java - 游戏的主菜单

java - 为所有组件Java设置相同的字体

java - 从 HashMap 中检索记录

java - BufferedReader读取垃圾

java - 如何使用 Rectangle 类创建矩形数组?

java - JFrame 不重绘

java - Swing 自动完成文本字段/下拉

java - 调用内部类的JFrame并隐藏外部类的JFrame