Java 使用画布将其他组件添加到JFrame

Java 使用画布将其他组件添加到JFrame,java,swing,canvas,jframe,jpanel,Java,Swing,Canvas,Jframe,Jpanel,这是我的代码,它将创建一个带有画布的表单,并且工作正常: frame = new JFrame(title); frame.setSize(width, height); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setResizable(true); frame.set

这是我的代码,它将创建一个带有画布的表单,并且工作正常:

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);
但是我想添加一些微调器和复选框,所以我决定在框架的左侧创建一个
ContentPane
(height=frame.height,width=100),然后将我的组件添加到
ContentPane


我的问题是:如何将内容窗格添加到框架中?

默认情况下,JFrame使用
边框布局作为内容窗格。因此,您可以使用以下代码向内容窗格添加不同的面板:

frame.add(anotherPanel, BorderLayout.LINE_START);
frame.add(canvas, BorderLayout.CENTER);
有关更多信息和工作示例,请阅读上Swing教程的部分

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

  • setVisible(true)
    应该是将所有组件添加到框架后的最后一条语句
  • GUI应该在
    事件调度线程上创建
  • 您不应该向Swing GUI添加AWT组件。Canvas是一个AWT组件。改用JPanel