此面板用于组织此方法的所有操作。它位于一个JFrame内,并且一切正常,唯一的区别是该JPanel内的位置错开了(从左到右,有showQuestionsPanel,与右下角对齐的新行有addQuestionPanel,然后与底部对齐在showquestions面板的上方,但在addQuestionsPanel的右侧,我们有closeEQPanel,在它的右侧,但在addQuestionsPanel的下方是eqbuttonPanel。 closeEQPanel应该位于右上方的面板,其左边是showQuestionsPanel,紧随其后的应该是左侧的addQuestionPanel,而eqbuttonPanel则位于右边,所有对齐为2x2网格。这种布局有什么问题?

//arrange visual elements/create main panel
JPanel mainEQPanel = new JPanel();
GroupLayout eqLayout = new GroupLayout(mainEQPanel);
mainEQPanel.setLayout(eqLayout);
eqLayout.setAutoCreateGaps(true);
eqLayout.setAutoCreateContainerGaps(true);
eqLayout.setHorizontalGroup(
    eqLayout.createSequentialGroup()
        .addGroup(eqLayout.createParallelGroup(GroupLayout.Alignment.TRAILING))
            .addComponent(showQuestionsPanel)
            .addComponent(addQuestionPanel)
        .addGroup(eqLayout.createParallelGroup(GroupLayout.Alignment.CENTER))
            .addComponent(closeEQPanel)
            .addComponent(eqbuttonPanel)
);
eqLayout.setVerticalGroup(
        eqLayout.createSequentialGroup()
        .addGroup(eqLayout.createParallelGroup(GroupLayout.Alignment.LEADING))
            .addComponent(showQuestionsPanel)
            .addComponent(closeEQPanel)
        .addGroup(eqLayout.createParallelGroup(GroupLayout.Alignment.LEADING))
            .addComponent(addQuestionPanel)
            .addComponent(eqbuttonPanel)
);

最佳答案

您快要准备好了,您的问题是您永远不会为ParallelGroup分配任何东西,您的括号/括号位于错误的位置:

.addGroup(eqLayout.createParallelGroup(GroupLayout.Alignment.TRAILING))//NOTE THE CLOSE BRACKET HERE
.addComponent(showQuestionsPanel)
.addComponent(addQuestionPanel)


但是您需要:

.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING)
        .addComponent(showQuestionsPanel)
        .addComponent(addQuestionPanel))//NOTE THE CLOSE BRACKET HERE INSTEAD

关于java - 如何使用GroupLayout组织2x2自动调整大小的网格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30699594/

10-11 02:16