首页 > 解决方案 > 使用 GroupLayout 时出现 InvalidateStateException

问题描述

我收到消息了Baseline must be used along vertical axis。我尝试使用所有枚举进行对齐,但无济于事,并确保所有组件都已添加到水平轴和垂直轴。

这是异常链

在 javax.swing.GroupLayout$BaselineGroup.checkAxis(GroupLayout.java:2926) 在 javax.swing.GroupLayout$BaselineGroup.calculateSize(GroupLayout.java:2706) 在 javax.swing.GroupLayout$Group.calculatePreferredSize(GroupLayout.java:1602) ) 在 javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1346) 在 javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java:1638) 在 javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java: 1624) 在 javax.swing.GroupLayout$Group.calculatePreferredSize(GroupLayout.java:1602) 在 javax.swing.GroupLayout$Spring.getPreferredSize(GroupLayout.java:1346) 在 javax.swing.GroupLayout$Group.getSpringSize(GroupLayout.java :1638) 在 javax.swing.GroupLayout$Group.calculateSize(GroupLayout.java:1625) 在 javax.swing.GroupLayout$Group.calculatePreferredSize(GroupLayout.java:1602) 在 javax.swing.GroupLayout$Spring。getPreferredSize(GroupLayout.java:1346) 在 javax.swing.GroupLayout$SequentialGroup.setValidSize(GroupLayout.java:2017) 在 javax.swing.GroupLayout$Group.setSize(GroupLayout.java:1587) 在 javax.swing.GroupLayout.calculateAutopadding (GroupLayout.java:1079) 在 javax.swing.GroupLayout.layoutContainer(GroupLayout.java:918) 在 java.awt.Container.layout(Container.java:1513) 在 java.awt.Container.doLayout(Container.java: 1502) 在 java.awt.Container.validateTree(Container.java:1698) 在 java.awt.Container.validateTree(Container.java:1707) 在 java.awt.Container.validateTree(Container.java:1707) 在 java. awt.Container.validateTree(Container.java:1707) 在 java.awt.Container.validateTree(Container.java:1707) 在 java.awt.Container.validate(Container.java:1633) 在 java.awt.Container.validateUnconditionally (Container.java:1670) 在 java.awt.Window.pack(Window.java:818)在resumebuilder.ResumeBuilder.(ResumeBuilder.java:32)在resumebuilder.program.main(program.java:15)

这是代码

private void initComponents() {
    GroupLayout groupLayout = new GroupLayout(this);
    groupLayout.setAutoCreateGaps(true);
    groupLayout.setAutoCreateContainerGaps(true);

    jLabel1 = new JLabel("Name");
    jLabel1.setHorizontalAlignment(SwingConstants.RIGHT);

    firstName = new JTextField(50);
    firstName.setToolTipText("First Name");

    lastName = new JTextField(50);
    lastName.setToolTipText("Last Name");

    jLabel2 = new JLabel("Address");
    jLabel2.setHorizontalAlignment(SwingConstants.RIGHT);

    address1 = new JTextField(50);
    address1.setToolTipText("Address 1");

    address2 = new JTextField(50);
    address2.setToolTipText("Address 2");
    add(address2);

    toggleAddress3 = new javax.swing.JCheckBox();
    toggleAddress3.setText("Show third address");
    toggleAddress3.addMouseListener(new MouseListener() {
        @Override
        public void mouseClicked(MouseEvent e) {
            setToggle();
        }

        @Override
        public void mousePressed(MouseEvent e) {
        }

        @Override
        public void mouseReleased(MouseEvent e) {
        }

        @Override
        public void mouseEntered(MouseEvent e) {
        }

        @Override
        public void mouseExited(MouseEvent e) {
        }
    });

    address3 = new JTextField(50);
    address3.setToolTipText("Address 3");
    address3.setVisible(false);

    city = new JTextField(50);
    city.setToolTipText("City");

    state = new JTextField(10);
    state.setToolTipText("State");

    postalCode = new JTextField(25);
    postalCode.setToolTipText("Postal Code");

    jLabel3 = new JLabel("Gender");
    jLabel3.setHorizontalAlignment(SwingConstants.RIGHT);
    add(jLabel3);

    String[] items = {"", "Male", "Female"};
    gender = new JComboBox<String>(items);
    gender.setToolTipText("Gender");

    jLabel4 = new JLabel("Date of Birth");
    jLabel4.setHorizontalAlignment(SwingConstants.RIGHT);

    dateOfBirth = new JSpinner();

    groupLayout.setHorizontalGroup(groupLayout.createParallelGroup()
        .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
            .addComponent(jLabel1)
            .addComponent(firstName)
            .addComponent(lastName))
        .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
            .addComponent(jLabel2)
            .addComponent(address1))
        .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
            .addComponent(toggleAddress3)
            .addComponent(address2))
        .addComponent(address3)
        .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
            .addComponent(city)
            .addComponent(state)
            .addComponent(postalCode))
        .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
            .addComponent(jLabel3)
            .addComponent(gender))
        .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
            .addComponent(jLabel4)
            .addComponent(dateOfBirth))
    );
    groupLayout.setVerticalGroup(
        groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
            .addGroup(groupLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(firstName, GroupLayout.PREFERRED_SIZE,
                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                    .addComponent(lastName, GroupLayout.PREFERRED_SIZE,
                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(groupLayout.createParallelGroup(
                    GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(address1)
                )
                .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel3)
                .addComponent(jLabel4))
            .addGroup(groupLayout.createSequentialGroup()
                .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(address2, GroupLayout.PREFERRED_SIZE,
                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                    .addComponent(toggleAddress3))
                .addComponent(address3, GroupLayout.PREFERRED_SIZE,
                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(city, GroupLayout.PREFERRED_SIZE,
                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                    .addComponent(state, GroupLayout.PREFERRED_SIZE,
                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                    .addComponent(postalCode, GroupLayout.PREFERRED_SIZE,
                        GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
                .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(gender))
                .addGroup(groupLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(dateOfBirth))
    );
    setLayout(groupLayout);
}

标签: javaswinglayout-managergrouplayout

解决方案


推荐阅读