0

我已经在这里呆了几个小时了,我很困惑。我有这段代码,它在 JFrame 中添加了一个 JPanel,问题是当我将 Frame 设置为Free Design它时,它不会显示在 Frame 中。当我将框架设置Border Layout为代码时工作正常。我想做的是让它与Free Design我可以随意放置和调整 JPanel 大小的地方一起工作。这是将其放置在框架中的以下代码。

        canvas = new Canvas();
        canvas.setVisible(true);
        canvas.setImage(file);
        GroupLayout canvasLayout = new GroupLayout(canvas);
        canvas.setLayout(canvasLayout);
        canvas.setPreferredSize(new Dimension(100, 100));
        //canvas.setSize(200,200);
        //canvas.setPreferredSize(null);
        add(canvas);
        revalidate();

当我使用自由设计模式时,我错过了什么?这是构建布局的代码:

private void initComponents() {

    jInternalFrame1 = new javax.swing.JInternalFrame();

    jInternalFrame1.setVisible(true);

    javax.swing.GroupLayout jInternalFrame1Layout = new javax.swing.GroupLayout(jInternalFrame1.getContentPane());
    jInternalFrame1.getContentPane().setLayout(jInternalFrame1Layout);
    jInternalFrame1Layout.setHorizontalGroup(
        jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 0, Short.MAX_VALUE)
    );
    jInternalFrame1Layout.setVerticalGroup(
        jInternalFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGap(0, 0, Short.MAX_VALUE)
    );

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("PocketShop");
    setName("main");

    pack();
}
4

1 回答 1

1

取消 JInternalFrame

JInternalFrame 用于 JDesktopPane 中的子项。windows中的一种windows,即所谓的MDI,multi-document-interface,相对于SDI,single-document interface。

使用 JPanel 代替 Canvas

Canvas 是老原生平台 AWT 的一个 Component,JPanel 的 Swing,一个 JComponent。您可以在那里覆盖paintComponent。

对于 Free Design 布局,我将使用与 NetBeans IDE 中一样的 GUI 编辑器。我这样做了,所以无法进一步帮助你。

如果可能,不要使用重新验证。


如果您手动添加 Canvas,请尝试添加 JPanel,并设置为自定义创建代码new Canvas()canvas.

于 2012-11-14T15:59:20.877 回答