如何使用 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...