繁体   English   中英

将JPanel放在JFrame内

[英]Place JPanel inside of a JFrame

我已经在这里呆了几个小时了,我很沮丧。 我有这段代码,它在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();
}

放弃JInternalFrame

JInternalFrame适用于JDesktopPane中的孩子。 Windows中的一种窗口,即所谓的MDI(多文档界面),而不是SDI(单文档界面)。

使用JPanel而不是Canvas

Canvas是旧的本机平台AWT,一个组件,Swing的JPanel和一个JComponent。 您可以在那里覆盖paintComponent。

对于Free Design布局,我将使用NetBeans IDE中的GUI编辑器。 我愿意,所以无法进一步帮助您。

如果可能,请勿使用revalidate。


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM