此面板用于组织此方法的所有操作。它位于一个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/