使用 canvas 将其他组件添加到 JFrame
Add other components to JFrame with canvas
这是我的代码,它将创建一个带有 canvas 的表单并且工作正常:
frame = new JFrame(title);
frame.setSize(width, height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.setVisible(true);
canvas = new Canvas();
canvas.setSize(width, height);
canvas.setMinimumSize(new Dimension(width, height));
canvas.setMaximumSize(new Dimension(width, height));
canvas.setFocusable(false);
frame.add(canvas);
但是我想添加一些微调器和复选框,所以我决定在框架 (height = Frame.height , width = 100)
的左侧创建一个 ContentPane
,然后我将我的组件添加到 ContentPane
.
我的问题是:如何将内容窗格添加到框架中?
默认情况下,JFrame 使用 BorderLayout
作为内容窗格。因此,您可以使用如下代码向内容窗格添加不同的面板:
frame.add(anotherPanel, BorderLayout.LINE_START);
frame.add(canvas, BorderLayout.CENTER);
阅读 How to Use BorderLayout 上的 Swing 教程部分,了解更多信息和工作示例。
您真的应该使用本教程中的示例作为起点,因为它们将向您展示如何更好地构建代码。例如:
setVisible(true)
应该是所有组件都添加到框架后的最后一条语句
- 应在
Event Dispatch Thread
上创建 GUI。
- 您不应将 AWT 组件添加到 Swing GUI。 Canvas 是一个 AWT 组件。请改用 JPanel。
这是我的代码,它将创建一个带有 canvas 的表单并且工作正常:
frame = new JFrame(title);
frame.setSize(width, height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.setVisible(true);
canvas = new Canvas();
canvas.setSize(width, height);
canvas.setMinimumSize(new Dimension(width, height));
canvas.setMaximumSize(new Dimension(width, height));
canvas.setFocusable(false);
frame.add(canvas);
但是我想添加一些微调器和复选框,所以我决定在框架 (height = Frame.height , width = 100)
的左侧创建一个 ContentPane
,然后我将我的组件添加到 ContentPane
.
我的问题是:如何将内容窗格添加到框架中?
默认情况下,JFrame 使用 BorderLayout
作为内容窗格。因此,您可以使用如下代码向内容窗格添加不同的面板:
frame.add(anotherPanel, BorderLayout.LINE_START);
frame.add(canvas, BorderLayout.CENTER);
阅读 How to Use BorderLayout 上的 Swing 教程部分,了解更多信息和工作示例。
您真的应该使用本教程中的示例作为起点,因为它们将向您展示如何更好地构建代码。例如:
setVisible(true)
应该是所有组件都添加到框架后的最后一条语句- 应在
Event Dispatch Thread
上创建 GUI。 - 您不应将 AWT 组件添加到 Swing GUI。 Canvas 是一个 AWT 组件。请改用 JPanel。