Java GroupLayout:垂直组和水平组

Java GroupLayout:垂直组和水平组,java,swing,grouplayout,Java,Swing,Grouplayout,我正在尝试创建一个小Jpanel,其前面有一个GroupLayout。在尽可能多地关注了这个问题并研究了一些StackOverflow问题之后,我仍然被卡住了 错误如下: 线程“AWT-EventQueue-0”中出现异常 java.lang.IllegalStateException: javax.swing.JButton[,0,0,0x0,无效,alignmentX=0.0,alignmentY=0.5,border=com.apple.laf.aquabuttonorder$Dynami

我正在尝试创建一个小Jpanel,其前面有一个GroupLayout。在尽可能多地关注了这个问题并研究了一些StackOverflow问题之后,我仍然被卡住了

错误如下:

线程“AWT-EventQueue-0”中出现异常 java.lang.IllegalStateException: javax.swing.JButton[,0,0,0x0,无效,alignmentX=0.0,alignmentY=0.5,border=com.apple.laf.aquabuttonorder$Dynamic@5eef2e7c,flags=288,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=2,bottom=0,right=2],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=false,rolloverSelectedIcon=,rolloverSelectedIcon=,selectedIcon=,text=Invest,defaultCapable=true]未附加到垂直组

我知道问题与按钮的连接位置有关。在所有的错误之后,它明确地说了出来。然而,我只是不知道我应该以什么方式连接它们。有什么想法吗

    JPanel panel = new JPanel();

    GroupLayout layout = new GroupLayout(panel);
    panel.setLayout(layout);


    panel.setMinimumSize(new Dimension(2000,100));      
    panel.setBorder(BorderFactory.createTitledBorder((cdo.getTicker()) + " : (" + cdo.getCurrency() + ")"));


    layout.setVerticalGroup(
            layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(new JButton("Invest")))                       
                    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                            .addComponent(new JButton("Ignore")))
                            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                                    .addComponent(new JButton("Article")))

            );


    layout.setHorizontalGroup(
            layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
                    .addComponent(new JButton("Invest"))
                    .addComponent(new JButton("Ignore"))
                    .addComponent(new JButton("Article"))
                    )
            );
new JButton(“Invest”)
创建一个新按钮,它与以前使用new
JButton(“Invest”)
创建的按钮不同

将按钮的初始化移动到布局之前:

JButton investButton = new JButton("Invest");
JButton articleButton = new JButton("Article");
JButton ignoreButton = new JButton("Ignore");

layout.setVerticalGroup(
    layout.createSequentialGroup()
        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
            .addComponent(investButton))                       
        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
            .addComponent(ignoreButton))
        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
            .addComponent(articleButton)));

layout.setHorizontalGroup(
    layout.createSequentialGroup()
        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addComponent(investButton)
            .addComponent(ignoreButton)
            .addComponent(articleButton)));