0

こんにちは、割り当て要件からグループ レイアウトを実装しようとしましたが、以下は私のコード スニペットですが、pack(); を実行すると、このコード スニペット内で 1 つの問題が発生します。それは私に例外をスローします。また、それを表示する方法もわかりません。コードの提案が間違っている場所を教えてください。

前もって感謝します

public class AMS_GUI extends JFrame
{
   private JFrame frame;



public AMS_GUI()
{
  makeFrame(); 
}

public void makeFrame()
{
   JLabel unitLabel = new JLabel("Units"); // units label
   JComboBox unitCombo = new JComboBox(); // units empty combo box
   JButton addUnit = new JButton("Add"); // add units button for adding units

   JLabel AssessmentLabel = new JLabel("Assessments"); // assessments Label
   JComboBox AssessmentCombo = new JComboBox(); // assessments empty combo box
   JButton addAssessment = new JButton("Add"); // assessments add button

   JLabel TasksLabel = new JLabel("Tasks"); // tasks Label
   JComboBox TasksCombo = new JComboBox(); // tasks empty combo box
   JButton addTasks = new JButton("Add"); // tasks add button
   JButton editTasks = new JButton("Edit");// tasks Edit button

   JLabel planLabel = new JLabel("Plans");
   JButton makePlan = new JButton("MakePlan");
   JButton showPlan = new JButton("ShowPlan");
   JButton savePlan = new JButton("SavePlan");

    //Set up the content pane.
    GroupLayout layout = new GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setAutoCreateGaps(true);
    layout.setAutoCreateContainerGaps(true);

    layout.setHorizontalGroup(layout.createSequentialGroup()
        .addComponent(unitLabel)
        .addComponent(AssessmentLabel)
        .addComponent(TasksLabel)
        .addComponent(planLabel)
        .addGroup(layout.createParallelGroup(LEADING)
        .addComponent(unitCombo)
        .addComponent(AssessmentCombo)
        .addComponent(TasksCombo)
        .addComponent(makePlan)
        .addComponent(showPlan)
        .addComponent(savePlan))
        .addGroup(layout.createParallelGroup(LEADING)
            .addComponent(addUnit)
            .addComponent(addAssessment)
            .addComponent(addTasks)
            .addComponent(editTasks)
            )
            );



        setTitle("AMS_GUI");
        pack();

例外

Exception in thread "main" java.lang.IllegalStateException: javax.swing.JButton
    [,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.5,
    border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@bb6ab6,flags=296,
    maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,
    margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,
    paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,
    selectedIcon=,text=Edit,defaultCapable=true] 
    is not attached to a vertical group
4

1 に答える 1

3
Exception in thread "main" java.lang.IllegalStateException: javax.swing.JButton
    [..] 
    is not attached to a vertical group

垂直グループを追加し、それにコンポーネントを追加します。

JavaDocsから:

GroupLayout各軸を個別に扱います。すなわち、横軸を表すグループと、縦軸を表すグループがある。水平グループは、水平軸に沿った最小サイズ、優先サイズ、最大サイズを決定し、それに含まれるコンポーネントの x と幅を設定します。垂直グループは、垂直軸に沿った最小サイズ、推奨サイズ、最大サイズを決定し、それに含まれるコンポーネントの y と高さを設定します。それぞれComponentが水平グループと垂直グループの両方に存在する必要があります。存在しない場合、IllegalStateExceptionレイアウト中、または最小サイズ、優先サイズ、または最大サイズが要求されたときにがスローされます。

于 2012-05-06T16:29:57.393 に答える