Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JFrame中调整JTextField的大小?_Java_Swing_User Interface - Fatal编程技术网

Java 如何在JFrame中调整JTextField的大小?

Java 如何在JFrame中调整JTextField的大小?,java,swing,user-interface,Java,Swing,User Interface,我只是为了练习而创建一个简单的GUI,我想在JFrame中有几个文本框,但是我创建的JTextField占用了整个框架。我试过了。设置大小,但没用 JFrame public static Component textbox(String x){ JLabel lbltAm= new JLabel(x); JTextField tftAm = new JTextField(20); lbltAm.setLabelFor(tftAm); lbltAm.setFont

我只是为了练习而创建一个简单的GUI,我想在JFrame中有几个文本框,但是我创建的JTextField占用了整个框架。我试过了。设置大小,但没用

JFrame

public static Component textbox(String x){
    JLabel lbltAm= new JLabel(x);
    JTextField tftAm = new JTextField(20);
    lbltAm.setLabelFor(tftAm);
    lbltAm.setFont(new Font("Serif", Font.PLAIN, 18));
    tftAm.setSize(10, 10);
    return tftAm;
}

private static void createAndShowGUI() {

    //Create and set up the window.


    JFrame frame = new JFrame("Tip Calculator");
    //Add Textbox
    frame.add(textbox("TipAmmount"));

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setBackground(Color.gray);
    frame.setPreferredSize(new Dimension(250, 400));
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

这是因为我建议您使用FlowLayout和GridBagLayout时,您没有使用任何布局。

这是因为我建议您使用FlowLayout和GridBagLayout时,您没有使用任何布局。

而不是返回JTextField,返回一个Panel对象并将JTextField和Jlabel对象添加到面板中。您可以使用我使用的任何布局边界布局

public static Component textbox(String x){
    JPanel panel = new JPanel(new BorderLayout());
    JLabel lbltAm= new JLabel(x);
    JTextField tftAm = new JTextField(20);
    lbltAm.setLabelFor(tftAm);
    lbltAm.setFont(new Font("Serif", Font.PLAIN, 18));
    tftAm.setSize(10, 10);
    panel.add(lbltAm, BorderLayout.NORTH);
    panel.add(tftAm, BorderLayout.CENTER);

    return panel;
}
可以使用多个布局在面板中布局零部件

将组件直接添加到JFrame不是一个好的做法 像这样使用它

frame.getContentPane().add(组件)

或者,如果使用borderlayout,您可以这样添加

frame.getContentPane().add(compent,BorderLayout.CENTER)


返回一个Panel对象并将JTextField和Jlabel对象添加到面板中,而不是返回JTextField。您可以使用我使用的任何布局BorderLayout

public static Component textbox(String x){
    JPanel panel = new JPanel(new BorderLayout());
    JLabel lbltAm= new JLabel(x);
    JTextField tftAm = new JTextField(20);
    lbltAm.setLabelFor(tftAm);
    lbltAm.setFont(new Font("Serif", Font.PLAIN, 18));
    tftAm.setSize(10, 10);
    panel.add(lbltAm, BorderLayout.NORTH);
    panel.add(tftAm, BorderLayout.CENTER);

    return panel;
}
可以使用多个布局在面板中布局零部件

将组件直接添加到JFrame不是一个好的做法 像这样使用它

frame.getContentPane().add(组件)

或者,如果使用borderlayout,您可以这样添加

frame.getContentPane().add(compent,BorderLayout.CENTER)


尝试创建一个FlowLayout,并将JTextField和JLabel放在布局中。然后将您的布局添加到JFrameCool,我来试一试。
新字体(“Serif”,Font.PLAIN,18)
最好是
新字体(Font.Serif,Font.PLAIN,18)
用于编译时检查。尝试创建一个流程布局,并将您的JTextField和JLabel放在布局中。然后将布局添加到JFrameCool,我来试一试。
新字体(“Serif”,Font.PLAIN,18)
最好是
新字体(Font.Serif,Font.PLAIN,18)
用于编译时检查。JFrame将BorderLayout作为APIJFrame中的默认布局管理器将BorderLayout作为API中的默认布局管理器