可以参考 JDK 的 API,里面有一段:
JFrame 类与 Frame 轻微不兼容。与其他所有 JFC/Swing 顶层容器一样,JFrame 包含一个 JRootPane 作为其唯一的子容器。根据规定,根窗格所提供的内容窗格应该包含 JFrame 所显示的所有非菜单组件。这不同于 AWT Frame。为了方便地使用 add 及其变体,已经重写了 remove 和 setLayout,以在必要时将其转发到 contentPane。这意味着可以编写: frame.add(child);
子级将被添加到 contentPane。内容窗格始终是非 null 的。试图将其设置为 null 会导致 JFrame 抛出异常。默认的内容窗格上会设置有 BorderLayout 管理器。有关添加、移除和设置 JFrame 的 LayoutManager 的详细信息,请参阅 RootPaneContainer。
JFrame 类与 Frame 轻微不兼容。与其他所有 JFC/Swing 顶层容器一样,JFrame 包含一个 JRootPane 作为其唯一的子容器。根据规定,根窗格所提供的内容窗格应该包含 JFrame 所显示的所有非菜单组件。这不同于 AWT Frame。为了方便地使用 add 及其变体,已经重写了 remove 和 setLayout,以在必要时将其转发到 contentPane。这意味着可以编写: frame.add(child);
子级将被添加到 contentPane。内容窗格始终是非 null 的。试图将其设置为 null 会导致 JFrame 抛出异常。默认的内容窗格上会设置有 BorderLayout 管理器。有关添加、移除和设置 JFrame 的 LayoutManager 的详细信息,请参阅 RootPaneContainer。
不知道是哪里出问题了
import java.awt.Color;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;public class SnakeMain extends JFrame
{
private JPanel jPanel1; //活动范围
private JPanel jPanel2; //信息记录
private JLabel jLabel1; //等级标签
private JLabel jLabel2; //分数标签
private JTextField jTextField1; //等级显示框
private JTextField jTextField2; //分数显示框
public SnakeMain()
{
jLabel1 = new JLabel("等级");
jLabel2 = new JLabel("分数");
jTextField1 = new JTextField(5);
jTextField2 = new JTextField(5);
jPanel2 = new JPanel();
jPanel2.add(jLabel1);
jPanel2.add(jTextField1);
jPanel2.add(jLabel2);
jPanel2.add(jTextField2);
jPanel1 = new JPanel();
jPanel1.setSize(400, 400);
jPanel2.setSize(400, 400);
jPanel1.setBackground(Color.BLACK);
this.add(jPanel1,BorderLayout.CENTER);
this.add(jPanel2,BorderLayout.EAST);
this.setSize(800, 400);
this.setVisible(true);
}
public static void main(String[] args)
{
new SnakeMain();
}
}