获取异常:java.lang.IllegalArgumentException:无法添加到布局:约束必须是字符串(或null)

获取异常:java.lang.IllegalArgumentException:无法添加到布局:约束必须是字符串(或null),java,swing,awt,gridbaglayout,illegalargumentexception,Java,Swing,Awt,Gridbaglayout,Illegalargumentexception,我正在实施一个类似浏览器的项目,我遇到了一个例外 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.Insets; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; import chrriis

我正在实施一个类似浏览器的项目,我遇到了一个例外

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import chrriis.dj.nativeswing.swtimpl.NativeInterface;
import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;

public class WebPageDisplay extends JPanel{

    public WebPageDisplay() {  

         super(new BorderLayout());  
         try{
       JPanel webBrowserPanel = new JPanel(new BorderLayout());   
       // webBrowserPanel.setBorder(BorderFactory.createTitledBorder("Native Web Browser component"));   
        final JWebBrowser webBrowser = new JWebBrowser();   
        webBrowser.setBarsVisible(false);   
        webBrowser.setStatusBarVisible(true);   
        webBrowserPanel.add(webBrowser, BorderLayout.CENTER);   
        add(webBrowserPanel, BorderLayout.CENTER);
                    webBrowser.navigate("www.google.com");
        JScrollPane scrollPane = new JScrollPane();   
        Dimension preferredSize = scrollPane.getPreferredSize();   
        preferredSize.height += 20;   
        scrollPane.setPreferredSize(preferredSize);   
//      add(scrollPane, BorderLayout.NORTH);   
        add(scrollPane,new GridBagConstraints(0, 2, 2, 1, 1.0, 1.0, GridBagConstraints.CENTER, 
            GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));   

         }catch(Exception e){
             e.printStackTrace();

        }
      }

    public static void main(String[] args){
        NativeInterface.open();

         SwingUtilities.invokeLater(new Runnable() {

              public void run() {

                 WebPageDisplay webDisplay = new WebPageDisplay();

              }

            });

    }
}
java.lang.IllegalArgumentException: cannot add to layout: constraint must be a string (or null)
    at java.awt.BorderLayout.addLayoutComponent(BorderLayout.java:409)
    at java.awt.Container.addImpl(Container.java:1074)
    at java.awt.Container.add(Container.java:927)
    at WebPageDisplay.<init>(PBXPageDisplay.java:35)
    at WebPageDisplay$1.run(PBXPageDisplay.java:51)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:677)
    at java.awt.EventQueue.access$000(EventQueue.java:85)
    at java.awt.EventQueue$1.run(EventQueue.java:638)
    at java.awt.EventQueue$1.run(EventQueue.java:636)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:647)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
这是个例外

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import chrriis.dj.nativeswing.swtimpl.NativeInterface;
import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;

public class WebPageDisplay extends JPanel{

    public WebPageDisplay() {  

         super(new BorderLayout());  
         try{
       JPanel webBrowserPanel = new JPanel(new BorderLayout());   
       // webBrowserPanel.setBorder(BorderFactory.createTitledBorder("Native Web Browser component"));   
        final JWebBrowser webBrowser = new JWebBrowser();   
        webBrowser.setBarsVisible(false);   
        webBrowser.setStatusBarVisible(true);   
        webBrowserPanel.add(webBrowser, BorderLayout.CENTER);   
        add(webBrowserPanel, BorderLayout.CENTER);
                    webBrowser.navigate("www.google.com");
        JScrollPane scrollPane = new JScrollPane();   
        Dimension preferredSize = scrollPane.getPreferredSize();   
        preferredSize.height += 20;   
        scrollPane.setPreferredSize(preferredSize);   
//      add(scrollPane, BorderLayout.NORTH);   
        add(scrollPane,new GridBagConstraints(0, 2, 2, 1, 1.0, 1.0, GridBagConstraints.CENTER, 
            GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));   

         }catch(Exception e){
             e.printStackTrace();

        }
      }

    public static void main(String[] args){
        NativeInterface.open();

         SwingUtilities.invokeLater(new Runnable() {

              public void run() {

                 WebPageDisplay webDisplay = new WebPageDisplay();

              }

            });

    }
}
java.lang.IllegalArgumentException: cannot add to layout: constraint must be a string (or null)
    at java.awt.BorderLayout.addLayoutComponent(BorderLayout.java:409)
    at java.awt.Container.addImpl(Container.java:1074)
    at java.awt.Container.add(Container.java:927)
    at WebPageDisplay.<init>(PBXPageDisplay.java:35)
    at WebPageDisplay$1.run(PBXPageDisplay.java:51)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:677)
    at java.awt.EventQueue.access$000(EventQueue.java:85)
    at java.awt.EventQueue$1.run(EventQueue.java:638)
    at java.awt.EventQueue$1.run(EventQueue.java:636)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:647)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
java.lang.IllegalArgumentException:无法添加到布局:约束必须是字符串(或null)
位于java.awt.BorderLayout.addLayoutComponent(BorderLayout.java:409)
位于java.awt.Container.addImpl(Container.java:1074)
在java.awt.Container.add处(Container.java:927)
在WebPageDisplay。(PBXPageDisplay.java:35)
在WebPageDisplay$1.run(PBXPageDisplay.java:51)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)中
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:677)
在java.awt.EventQueue.access$000(EventQueue.java:85)
在java.awt.EventQueue$1.run(EventQueue.java:638)
在java.awt.EventQueue$1.run(EventQueue.java:636)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:647)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:211)
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:201)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
在java.awt.EventDispatchThread.run处(EventDispatchThread.java:122)

如果未使用GridBagLayout,则不能使用GridBagConstraints。编译器告诉你这没有意义,我完全同意。

@developer:建议再次是——不要使用GridBagConstraints,因为当使用的布局不是GridBagLayout时,它们没有意义。我不知道这会让你困惑。以上是您的全部代码还是借用了其中的任何部分,因为这是我理解您的困惑的唯一方法。@developer:那么您现在明白我的建议了吗?你为什么试图在这里使用GridBagConstraints?我已经创建了一个窗口(在此我将显示一个网页),该窗口将再次放置在另一个窗口中。你的评论对我来说没有意义。请澄清,让我们看看