Я занимаюсь некоторыми материалами GUI, чтобы попрактиковаться в финале, и я думаю, что у меня были основы. Однако каждый раз, когда я пытаюсь добавить JTextField в свой JPanel, мой JButton стирается, и весь интерфейс исчезает. В конечном счете, я хотел, чтобы область текста менялась, когда я нажимал кнопку, но я даже не вижу текстовую область. Я знаю, что я, вероятно, сделал действительно новичковую ошибку, поэтому не убивай меня, пожалуйста. Код ниже не работает, однако, как только я отключу JTextField, он работает нормально.Невозможно добавить JTextfield в JPanel
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();
}
}
Oh! Спасибо за ответ. Но почему? – Aire
@Aire, по умолчанию все компоненты имеют размер (0, 0), поэтому они не окрашиваются. Метод pack() вызывает диспетчер компоновки, который задает размер/расположение компонента на основе правил диспетчера компоновки. – camickr