如何使用 GridBagLayout 垂直格式化

问题描述

我正在制作一个使用盒子和 JComboBox 的项目,并且想要使用 GridBagLayout。我想要在屏幕顶部中心的组合框,然后是 Box,中间有一个 JTextArea。到目前为止,这是我的代码:

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import javax.swing.JFrame;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JTextArea;
import javax.swing.JComboBox;

/**comboBoxFrame Constructor
 * Takes Mouse Event Input From User
 * Based On Option Chosen By User From Dropdown,Displays Corresponding information,Taken From birtdayCaclulator.java
 */
@SuppressWarnings("serial")
public class comboBoxFrame extends JFrame {
    private final JComboBox<String> classComboBox;
    private JTextArea outputBox;
    
    private static final String[] names = {
            "-Select-","Age Summary","Zodiac Sign","Birth Stone","Generation","Day of Week","Lucky Number","Milestones","First Presidential Election Vote","Days Since Last Birthday","Days Until Next Birthday","Animal Years Summary","Other Planet Age Summary","Days After Milestones Summary","Birthday Summary","Help"
    };
    private static final String[] output = {
            "Output will appear here",CreateDriver.bday.ageSummary(),CreateDriver.bday.getZodiacSign(),CreateDriver.bday.getBirthStone(),CreateDriver.bday.getGeneration(),CreateDriver.bday.getDayOfWeek(),CreateDriver.bday.getLuckyNum(),CreateDriver.bday.getMileStones(),CreateDriver.bday.getFirstPresElectionVote(),CreateDriver.bday.getDaysSinceLastBday(),CreateDriver.bday.getDaysTillNextBday(),CreateDriver.bday.animalYearsSummary(),CreateDriver.bday.otherPlanetAgeSummary(),CreateDriver.bday.getDaysAfterMilestonesSummary(),CreateDriver.bday.toString(),CreateDriver.bday.getHelp()
    };
    
    public comboBoxFrame() {
        super("Birthday Calculator");
        setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        
        Box box = new Box(BoxLayout.Y_AXIS);    
        outputBox = new JTextArea("Output will appear here",20,50);
        box.add(outputBox,gbc);
        
        classComboBox = new JComboBox<String>(names);
        classComboBox.setMaximumRowCount(5);
                
        classComboBox.addItemListener(
            new ItemListener() {
                @Override
                public void itemStateChanged(ItemEvent event) {
                    if (event.getStateChange() == ItemEvent.SELECTED) {
                        outputBox.setText(output[classComboBox.getSelectedIndex()]);
                    }
                }
            }
        );
        
        add(classComboBox,gbc);
        outputBox = new JTextArea("Output will appear here");
        add(outputBox,gbc);
    }
}

它当前在中心 Y 轴处彼此相邻地打印 ComboBox 和 Box。有谁知道我应该改变什么来解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)