我正在阅读一本名为“JFC Swing Tutorial(第二版)”的书,我在开始时已经遵循了这段代码,应该在内容窗格中显示按钮和标签,但我得到的只是一个空白屏幕。有任何想法吗? 感谢。
import java.awt.GridLayout;
import javax.swing.*;
public class m extends JFrame
{
void UserFrame()
{
//JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Hellow You");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel jp = new JPanel(new GridLayout(0,1));
//makes label
JLabel label = new JLabel("Sup ");
//adds to the frames content pane a label
frame.getContentPane().add(label);
JButton button = new JButton("Hai");
frame.getContentPane().add(button);
jp.add(button);
jp.add(label);
jp.setBorder(BorderFactory.createEmptyBorder(30,30,10,30));
//pack set the window to what it needs AKA to display all components
frame.pack();
//frame.setSize(250, 250);
//shows window
frame.setVisible(true);
}
public static void main(String[] args)
{
final m window = new m();
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
window.UserFrame();
}
});
}
}
答案 0 :(得分:4)
只需添加
frame.add(jp);
之前
frame.pack();
这里发生了什么?您正确地将所有小部件添加到JPane中,但是您基本上将JPane扔掉了,并且没有在任何地方使用它。
这足以让它正常工作。
如果您想要正确执行此操作,还应删除frame.getContentPane().add(label);
和frame.getContentPane().add(button);
(感谢@dic19注意!)。这些不会像你使用它一样工作。