使用 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 教程部分,了解更多信息和工作示例。

您真的应该使用本教程中的示例作为起点,因为它们将向您展示如何更好地构建代码。例如:

  1. setVisible(true) 应该是所有组件都添加到框架后的最后一条语句
  2. 应在 Event Dispatch Thread 上创建 GUI。
  3. 您不应将 AWT 组件添加到 Swing GUI。 Canvas 是一个 AWT 组件。请改用 JPanel。