如何使用 Runnable 方法将 JPanel 添加到 JFrame

How to add a JPanel to a JFrame with Runnable method

当我创建一个 JPanel 并将其添加到我的 JFrame 并将我的 canvas 添加到其中 (space) 时,它将仅显示 JPanel 而不是任何图形。为什么它只显示 JPanel 而我希望它同时显示它们?

源代码:http://pastebin.com/Cw9E0a8j

解决方法很简单。在您的代码中,您将 'space' 放在 window 的中心,因此您告诉它占据整个屏幕。你应该做的是这个。

frame.add(p, BorderLayout.EAST);//EAST for the rigth
frame.add(space, BorderLayout.WEST);//WEST for the left

如果您打算在 jPanel 中添加 canvas,您可以尝试更改源代码中的以下行

原码:

frame.add(p);
frame.add(space, BorderLayout.CENTER);

建议代码:

 p.add(space);
 frame.add(p, BorderLayout.CENTER);

如果您愿意同时查看 JPanel 和 JFrame 中的 canvas,请尝试为 canvas also.But 提供定位,不同的布局会做得更好。试试给定的例子。

原码:

    frame.setLayout(new BorderLayout());

    frame.add(p);
    frame.add(space, BorderLayout.CENTER);

建议代码 1: 通过在边框布局中为 JPanle 提供位置。

    frame.setLayout(new BorderLayout());

    frame.add(p, BorderLayout.NORTH);
    frame.add(space, BorderLayout.CENTER);

建议代码 2: 通过更改 JFrame 的布局。

    frame.setLayout(new GridLayout(0,2));       

    frame.add(p);
    frame.add(space);

更多信息请参考官方文档[1]。
[1]. https://docs.oracle.com/javase/tutorial/uiswing/layout/index.html