有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVATextField不在JLabel下

注意:我的英语不是最好的,所以请不要介意有太多语法错误

嘿,这里是Java初学者,不管怎样,我正在测试我计划编写的程序的一个小型“beta”版本,所以我制作了一个文本字段,它不会放在我制作的JLabel下,我尝试使用BorderLayout。页面结束时将其放在底部,但它不会放在底部。代码如下:

package test;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class TextTest {
    private static TextField field;
    private static void createGUI() {
        Font a = new Font(null, Font.BOLD, 0);
        Font size = a.deriveFont(20f);
        JLabel test = new JLabel("");
        test.setPreferredSize(new Dimension(200,200));
        test.setText("<html> Welcome to the EMOJI Translator! Type the <br> Emoji in the Text Area And hit Enter! and it will say What the emoji means! <html>");
        test.setFont(size);
        field = new TextField(2);
        field.setSize(new Dimension(200,200));
        field.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent arg0) {
                String test = field.getText();
                String search1 = ":D";
                if(test.equals(search1)) {
                    System.out.println("This is an Happy Smiley.");
                }

            }});
        JFrame b = new JFrame("TEST");
        b.setLocationRelativeTo(null);
        b.setPreferredSize(new Dimension(350,350));
        b.setLayout(new FlowLayout());
        b.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        b.getContentPane().add(field, BorderLayout.PAGE_END);
        b.getContentPane().add(test, BorderLayout.CENTER);

        b.pack();
        b.setVisible(true);

    }


    public static void main(String[] args) {
        createGUI();


    }




}

下面是一个链接,指向它在我的电脑中如何结束的屏幕截图: http://imgur.com/y988zUx

如果你知道有什么问题,请回答这个问题


共 (1) 个答案

  1. # 1 楼答案

    您正试图将BorderLayout的属性用于带有FlowLayout的gui生成。在Java中,不能混合使用不同的布局管理器,这样会忽略布局属性

    您应该将布局管理器设置为BorderLayout,以便它接受您的属性:

    b.setLayout(new BorderLayout());