我正在阅读一本名为“JFC Swing 教程(第二版)”的书,而且我几乎一开始就遵循了这段代码,它应该在内容窗格中显示按钮和标签,但我只是得到的是一个空白屏幕。有任何想法吗?谢谢。
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();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
只需添加
frame.add(jp);
Run Code Online (Sandbox Code Playgroud)
就在之前
frame.pack();
Run Code Online (Sandbox Code Playgroud)
这里发生了什么事?您正确地将所有小部件添加到 JPane,但您基本上将那个 JPane 扔掉并且没有在任何地方使用它。
这足以让它正常工作。
如果你想正确地做到这一点,你还应该删除frame.getContentPane().add(label);和frame.getContentPane().add(button);(感谢@dic19注意到这一点!)。这些不会像您使用的那样工作。
| 归档时间: |
|
| 查看次数: |
2141 次 |
| 最近记录: |