Java 如何使用NetBeans从JPanel中删除布局?

Java 如何使用NetBeans从JPanel中删除布局?,java,layout,netbeans,jpanel,Java,Layout,Netbeans,Jpanel,我正在使用一个带有JPanel的主窗口(JFrame),它使用一个简单的CardLayout,CardLayout中填充了一些JPanel 如果我将JPanel从调色板拖放到CardLayout,然后将内容放在面板中,效果会很好。但是,我想将不同的JPanel放在不同的文件中,因此我用NetBeans创建了一些JPanel表单 我现在唯一的问题是,当我将派生的JPanel类放到CardLayout上(例如,使用NetBeans中的“Choose Bean”函数)时,NetBeans总是为面板设置

我正在使用一个带有JPanel的主窗口(JFrame),它使用一个简单的CardLayout,CardLayout中填充了一些JPanel

如果我将JPanel从调色板拖放到CardLayout,然后将内容放在面板中,效果会很好。但是,我想将不同的JPanel放在不同的文件中,因此我用NetBeans创建了一些JPanel表单

我现在唯一的问题是,当我将派生的JPanel类放到CardLayout上(例如,使用NetBeans中的“Choose Bean”函数)时,NetBeans总是为面板设置一个新布局,因此我从JPanel类得到的原始布局被覆盖,我得到的只是一个空白的JPanel

那么,有人知道有没有一种方法可以简单地从我的JPanel类中删除布局?我的意思是,我不能将布局设置为“None”或NetBeans,如果我将其设置为“Null Layout”,它仍然会调用“jPanel.setLayout(Null);”当然,但我只想根本不调用setLayout,不知怎的,这不可能吗

如果我在这里找到解决方案真是太蠢了,我也很抱歉。我对NetBeans非常陌生,但必须有一种方法来手动更改代码,我不能只使用“自定义代码”选项,因为它显示了子组件和布局的“//代码-此处未显示”


我希望任何人都能理解我的问题所在。:)

这是不使用GUI构建器的主要原因之一。您应该能够在Netbeans中找到某个人的代码,但是,我建议手动重新启动GUI。它会给你更多的灵活性,你会更好地理解你在做什么。

很烦人,不是吗?你可以这样编码

在派生的
JPanel
类在其构造函数中调用
initComponent()
之后,它可以禁用对
setLayout()
的任何进一步调用,例如,
setAllowLayoutChange(false)

将以下代码放在从
JPanel
派生的公共基类中:

protected boolean mAllowLayoutChange;

/** Creates new form CommonPanel */
public CommonPanel()
{
    super();
    mAllowLayoutChange=true;
}

public void setAllowLayoutChange(boolean b)
{
    mAllowLayoutChange=b;
}

@Override
public void setLayout(LayoutManager mgr)
{
    if(mAllowLayoutChange) super.setLayout(mgr);
}

我也有同样的问题,因此浪费了很多时间。我看不到任何JLabel添加到扩展类中

我认为这是Netbeans designer中一个令人难以置信的缺陷,这都是由于生成了一个愚蠢且不可删除的Panel1.setLayout(新

通过对前面的答案使用addaption解决了这个问题。基本上是在initComponents之后锁定类setLayout

protected boolean mAllowLayoutChange=true;

/** Creates new form CommonPanel */
public CommonPanel()
{
    initComponents();
    //no more layout changes allowed
    mAllowLayoutChange=false;
}

@Override
public void setLayout(LayoutManager mgr)
{
    if(mAllowLayoutChange) super.setLayout(mgr);
}

只需将其设置为默认布局-这会阻止代码生成器执行任何操作。请注意,Netbeans调用此默认/FlowLayout,但实际上它什么也不做…

谢谢,我现在已经这么做了。但如果能知道我的问题的答案,我还是很高兴的,我想我不是唯一一个有此问题的人。对不起,我不能再帮助你了pful,如果不看代码,很难判断GUI问题中发生了什么。SSCCE通常用于演示问题。Xander,你找到解决方法了吗?这一定是一个常见的问题。我面临着同样的问题