Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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 Can';t将JTextfield添加到JPanel_Java_Swing - Fatal编程技术网

Java Can';t将JTextfield添加到JPanel

Java Can';t将JTextfield添加到JPanel,java,swing,Java,Swing,我一直在为期末考试做一些GUI练习,我想我已经掌握了基本知识。然而,每次我尝试向我的JPanel添加JTextField时,我的JButton都会被删除,整个接口都会消失。最后,当我点击按钮时,我想改变文本区域,但我甚至看不到文本区域。我知道我可能犯了一个新手级的错误,所以请不要杀我。下面的代码不起作用-但是一旦我去掉JTextField,它就可以正常运行了 import javax.swing.*; import java.awt.event.*; import java.awt.*; imp

我一直在为期末考试做一些GUI练习,我想我已经掌握了基本知识。然而,每次我尝试向我的JPanel添加JTextField时,我的JButton都会被删除,整个接口都会消失。最后,当我点击按钮时,我想改变文本区域,但我甚至看不到文本区域。我知道我可能犯了一个新手级的错误,所以请不要杀我。下面的代码不起作用-但是一旦我去掉JTextField,它就可以正常运行了

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.JTextField;

public class test5 {

    private JFrame f;
    private JPanel p;
    private JButton b1;
    private JTextField jt; 

    public test5 () {
        gui();
    }
    public void gui () {
        f = new JFrame(); 
        f.setVisible(true);
        f.setSize(600,400);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

        jt = new JTextField(20);
        jt.setEditable(false);

        p = new JPanel(); 
        p.setBackground(Color.YELLOW);
        b1 = new JButton("TEST"); 
        b1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "Hey, hey, hey!");
                jt.setText("Hello");
            }
        });

        p.add(b1);
        p.add(jt);

        f.add(p, BorderLayout.SOUTH);
    }
    public static void main (String args[]) {
        test5 test = new test5(); 
    }
}

在使框架可见之前,应将所有构件添加到框架中。请尝试以下操作:

f.add(p, BorderLayout.SOUTH);
f.pack();
f.setVisible(true);

在使框架可见之前,应将所有构件添加到框架中。请尝试以下操作:

f.add(p, BorderLayout.SOUTH);
f.pack();
f.setVisible(true);

在使框架可见之前,应将所有构件添加到框架中。请尝试以下操作:

f.add(p, BorderLayout.SOUTH);
f.pack();
f.setVisible(true);

在使框架可见之前,应将所有构件添加到框架中。请尝试以下操作:

f.add(p, BorderLayout.SOUTH);
f.pack();
f.setVisible(true);

哦谢谢你的回复。但是为什么呢?@Aire,默认情况下,所有组件的大小都是(0,0),因此它们不会被绘制。pack()方法调用布局管理器,它将根据布局管理器的规则设置组件的大小/位置。哦!谢谢你的回复。但是为什么呢?@Aire,默认情况下,所有组件的大小都是(0,0),因此它们不会被绘制。pack()方法调用布局管理器,它将根据布局管理器的规则设置组件的大小/位置。哦!谢谢你的回复。但是为什么呢?@Aire,默认情况下,所有组件的大小都是(0,0),因此它们不会被绘制。pack()方法调用布局管理器,它将根据布局管理器的规则设置组件的大小/位置。哦!谢谢你的回复。但是为什么呢?@Aire,默认情况下,所有组件的大小都是(0,0),因此它们不会被绘制。pack()方法调用布局管理器,它将根据布局管理器的规则设置组件的大小/位置。