微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 GridBagLayout 垂直格式化

如何解决如何使用 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 轴处彼此相邻地打印 ComboBoxBox。有谁知道我应该改变什么来解决这个问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。