�R���e�i�iJPanel���j�ɃR���|�[�l���g��lj�����ہA���̔z�u���@�����߂�̂�LayoutManager�B
LayoutManager�̋�ۃN���X�ɂ͐F�X�Ȏ�ނ�����̂ŁA�ړI�ɉ����Ďg��������B
Layout Manager |
���� | ���e | �R���|�[�l���g�T�C�Y�̊T�v | �����N |
---|---|---|---|---|
BorderLayout | 1.0 | ��E���E���E�����E�E�̂��ꂼ���1���R���|�[�l���g��z�u����B �t���[���̃R���e�i�̃f�t�H���g�B |
��Ɖ��̃R���|�[�l���g�͍��E��t�ɍL����B ���ƉE�̃R���|�[�l���g�͏㉺��t�ɍL����B �����͂��̒���t�ɍL����B |
|
BoxLayout | �@ | ����邢�͏c���Ɂi�܂�Ԃ������Łj�R���|�[�l���g����ׂ�B | �e�R���|�[�l���g�̐����T�C�Y �̂����A�ő�̂��̂ɍ��킹����B |
|
CardLayout | 1.0 | �����̃R���|�[�l���g��ێ����邪�A���̂���1������\������B �ł�������g���Ȃ��^�u�y�C���̕��������̂ł́c�H |
�y�C����t�ɍL����B |
|
FlowLayout | 1.0 | �����ɃR���|�[�l���g����ׂ�B �����Ȃ�������܂�Ԃ��Ď��̍s�ɕ��ׂ���B �����P�Ƀ{�^������ׂ��肵�����ꍇ�ɕ֗��B |
�����T�C�Y |
|
GridLayout | 1.0 | m�~n�̏��ڂɋ���Ă��̒��ɔz�u����B | ���ڂ̃T�C�Y��t�ɍL����B |
|
GridBagLayout | 1.0 | m�~n�̏��ڂɋ���Ă��̒��ɔz�u����B ���ړ��m���q���ő傫�ȃ}�X�ɂ��邱�Ƃ��o����B |
�@ |
|
GroupLayout | 1.6 | �R���|�[�l���g���c���ɃO���[�s���O����B �����O���[�v���ł͓����悤�Ȉʒu�Ɂi���āj�z�u�����B �_�C�A���O�����̂ɕ֗��B |
�����T�C�Y�B �ꍇ�ɂ���Ă͍ő�T�C�Y�܂ōL����B |
|
OverlayLayout | �@ | �R���|�[�l���g���݂��ɏd�ˍ��킹����B | �@ |
|
SpringLayout | 1.4 | �R���|�[�l���g���m�̊Ԋu���w�肷��B �E�B���h�E�T�C�Y��ύX����ƁA�Ԋu�w��ɉ����Ĉʒu���ω�����B �iSpring�́A�u�t�v����Ȃ��āu�o�l�v�j |
�@ |
|
JFrame�̃R���e�i�̃f�t�H���g�̃��C�A�E�g�B[2009-04-05]
�ȉ��̂悤��5�̃G���A�ɕ�����Ă���A���ꂼ��̈ʒu��1���i1�̂݁j�R���|�[�l���g��z�u�ł���B
NORTH �iPAGE_START�j |
||
WEST �iLINE_START�j |
CENTER | EAST �iLINE_END�j |
SOUTH �iPAGE_END�j |
private void initPane(Container c) { c.add(new JButton("NORTH"), BorderLayout.NORTH); c.add(new JButton("SOUTH"), BorderLayout.SOUTH); c.add(new JButton("WEST"), BorderLayout.WEST); c.add(new JButton("EAST"), BorderLayout.EAST); c.add(new JButton("CENTER"), BorderLayout.CENTER); }
NORTH��PAGE_START���Ɏw�肷��ƁAPAGE_START�̕����D�悳���BPAGE_END��LINE�n�����l�B
����ȊO�̎w��ł́A�����ʒu�ɍēxadd()����ƁA�ォ��lj����������L���ɂȂ�B
�ʒu�������w�肹����add()�����ꍇ��CENTER���w�肳�ꂽ���ƂɂȂ�B
BorderLayout�̃R���e�i�i�y�C���j�̃T�C�Y��ύX�����ꍇ�ABorderLayout���̊e�R���|�[�l���g���T�C�Y���ς��B
���̍ہA�������i���j��NORTH�ECENTER�ESOUTH���ς��B
�c�����i�����j��WEST�ECENTER�EEAST���ς��B
�R���|�[�l���g�̎�ނɂ���ẮA�o�^����ʒu��CENTER�ł�PAGE_START�ł��\���͓����悤�Ɍ����邪�A�T�C�Y�ύX�����ꍇ�̓��삪�ς���Ă���B
�iCENTER���ƕ����������ς�邪�APAGE_START�͕������ς��Ȃ��j
����邢�͏c�����܂�Ԃ��������R���|�[�l���g�����ׂ���B�iFlowLayout���Ɛ܂�Ԃ����j
�e�R���|�[�l���g�͊�{�I�ɐ����T�C�Y�A�Ƃ������E�B���h�E���ɓ����͈͂ōő�T�C�Y�ɂȂ�B
�Ⴆ�Έȉ��̂悤�ȃ��C�A�E�g������B
�e�L�X�g�G���A | �{�^�� |
�傫�� �X�N���[�� �G���A |
�������I�ɂ�2��JPanel�iBoxLayout�j�����̂悤�Ɏg�p����B
|
||
�傫�� �X�N���[�� �G���A |
��s�ځi�e�L�X�g�G���A+�{�^���j����������BoxLayout�ɂ���B
�{�^���T�C�Y�͌Œ�ŁA�e�L�X�g�G���A�͖������Ƃ���B����ƁA�E�B���h�E�����ɍL�����ۂɂ��A�{�^���T�C�Y�͕ς�炸�Ƀe�L�X�g�G���A���������ς��B
�i�������ƌ����Ă��A���ۂɂ̓E�B���h�E�����傫���l���Z�b�g���Ă����B�����ł̓E�B���h�E���͍ő�ł���������1280���x�Ȃ̂ŁA32768�iShort.MAX_VALUE�j�Ƃ��ɂ��Ă����悢�j
��s�ڂƓ�s�ځi�X�N���[���G���A�j���c������BoxLayout�ɂ���B�i��s�ڂ�BoxLayout�Ƃ͕ʃC���X�^���X�j
��s�ڂ̍������Œ�ɂ��Ă����A�E�B���h�E���c�ɍL�����ۂɂ̓X�N���[���G���A�������ω�����B
import javax.swing.BoxLayout; import javax.swing.JPanel;
private void initPane(Container c) { // 1�s�ڂ̓��� JComponent c1 = new JTextField("�e�L�X�g�G���A"); JComponent c2 = new JButton("�{�^��"); //�{�^���̃T�C�Y�͌Œ�Ȃ̂ŁA�e�L�X�g�G���A�̃T�C�Y������ɍ��킹�� Dimension sz1 = c1.getMaximumSize(); Dimension sz2 = c2.getMaximumSize(); sz1.width = Short.MAX_VALUE; //�e�L�X�g�G���A�̉����͂�����ł��傫���o���邱�Ƃɂ��� sz1.height = sz2.height; //�e�L�X�g�G���A�̍����̓{�^���̍����܂łƂ��� c1.setMaximumSize(sz1); // ����BoxLayout�i1�s�ځj JPanel panel1 = new JPanel(); panel1.setLayout(new BoxLayout(panel1, BoxLayout.LINE_AXIS)); panel1.add(c1); //�e�L�X�g�G���A panel1.add(c2); //�{�^�� // �X�N���[���G���A�i2�s�ځj JScrollPane scroll = new JScrollPane(new JTree()); // �c��BoxLayout JPanel panelV = new JPanel(); panelV.setLayout(new BoxLayout(panelV, BoxLayout.PAGE_AXIS)); panelV.add(panel1); //1�s�� panelV.add(scroll); //2�s�� c.add(panelV); }
�����̃R���|�[�l���g���T�C�Y���l�����Đ��Ă����B[2009-04-05]
�_�C�A���O�����Ƃ��ɕ֗��B
�������i�ʒu�����킹�����j�R���|�[�l���g���c�Ɖ����ꂼ��ɃO���[�v�����ēo�^����B
�����A���̋�̓I�ȕ��@�i�\���E�g�����j�����܂�����c�Ƃ���������Ȃ��Ƃ悭������Ȃ��B
�P���Ȃ��̂Ȃ��ȉ��̃v���O�����̂悤�ɒ莮�����Ă��܂��̂�������������Ȃ��B
�i����^���C�A�E�g���쐬����GroupLayoutUtil [2009-11-06]�j
1�s�e�L�X�g | |
���x���̂� | �@ |
�����s�e�L�X�g | |
�R���{�{�b�N�X |
������S�̂̃T�C�Y��ύX�����ꍇ�A���̗�̓��x���݂̂Ȃ̂ŁA�T�C�Y�͕s�ρB
�@�E�̗�̊e�R���|�[�l���g�̃T�C�Y���S�̂ɍ��킹�ĐL�k����B
�@1�s�e�L�X�g�iJTextField�j��R���{�{�b�N�X�iJComboBox�j�͍����͕s�ςȂ̂ŁA�c�����̍����͕����s�e�L�X�g�iJTextArea�j�������ς��B
�@�����́A���̗�ł͉E�̗�S�ẴR���|�[�l���g���ς��B
�@�v����ɁA�e�R���|�[�l���g�́A�X��setMaximumSize()�Ŏw�肳�ꂽ�ő�l�܂ōL����B
import javax.swing.GroupLayout; import javax.swing.GroupLayout.ParallelGroup; import javax.swing.GroupLayout.SequentialGroup;
private void initPane(Container container) { GroupLayout layout = new GroupLayout(container); container.setLayout(layout); // �R���|�[�l���g���m�̊Ԋu����ݒ� layout.setAutoCreateGaps(true); layout.setAutoCreateContainerGaps(true); // ��肽���\�� JComponent[][] compos = { { new JLabel("1�s�e�L�X�g"), new JTextField() }, { new JLabel("���x���̂�"), null }, { new JLabel("�����s�e�L�X�g"), new JScrollPane(new JTextArea()) }, { new JLabel("�R���{�{�b�N�X"), new JComboBox() }, }; int ny = compos.length; int nx = compos[0].length; // ���������̃O���[�v { SequentialGroup hg = layout.createSequentialGroup(); for (int x = 0; x < nx; x++) { ParallelGroup pg = layout.createParallelGroup(); for (int y = 0; y < ny; y++) { JComponent c = compos[y][x]; if (c != null) { pg.addComponent(c); } } hg.addGroup(pg); } layout.setHorizontalGroup(hg); } // ���������̃O���[�v { SequentialGroup vg = layout.createSequentialGroup(); for (int y = 0; y < ny; y++) { ParallelGroup pg = layout.createParallelGroup(GroupLayout.Alignment.BASELINE); for (int x = 0; x < nx; x++) { JComponent c = compos[y][x]; if (c != null) { pg.addComponent(c); } } vg.addGroup(pg); } layout.setVerticalGroup(vg); } }
�����̃R���|�[�l���g��1�̃R���|�[�l���g�̗l�Ɉ����ă��C�A�E�g�������ꍇ�i���L�̗�́u�e�L�X�g�{�b�N�X�v�Ɓu�{�^��1-1�v�j�A�ʓr�O���[�v������B[2009-09-26]
�i��GroupLayoutUtil���g���ĕ\��������@ [2009-11-06]�j
1�s�ڃ��x�� |
|
|||
2�s�ڃ��x�� |
private JComponent line1Label = new JLabel("1�s�ڃ��x��"); private JComponent line1Text = new JTextField("�e�L�X�g�{�b�N�X"); private JComponent line1Button11 = new JButton("�{�^��1-1"); private JComponent line1Button12 = new JButton("�{�^��1-2"); private JComponent line2Label = new JLabel("2�s�ڃ��x��"); private JComponent line2List = new JScrollPane(new JList(new String[] {"�I����1", "�I����2"})); private JComponent line2Button2 = new JButton("�{�^��2");
private void initPane(Container container) { GroupLayout layout = new GroupLayout(container); container.setLayout(layout); // �R���|�[�l���g���m�̊Ԋu����ݒ� layout.setAutoCreateGaps(true); layout.setAutoCreateContainerGaps(true); // �i�����O���[�v�j { SequentialGroup hg = layout.createSequentialGroup(); { // 1��� ParallelGroup pg = layout.createParallelGroup(); pg.addComponent(line1Label); pg.addComponent(line2Label); hg.addGroup(pg); } { // 2��� ParallelGroup pg = layout.createParallelGroup(); { SequentialGroup g = layout.createSequentialGroup(); g.addComponent(line1Text); g.addGap(0); //�Ԋu���l�߂� g.addComponent(line1Button11); pg.addGroup(g); } pg.addComponent(line2List); hg.addGroup(pg); } { // 3��� ParallelGroup pg = layout.createParallelGroup(); pg.addComponent(line1Button12); pg.addComponent(line2Button2); hg.addGroup(pg); } layout.setHorizontalGroup(hg); } // �s���i�����O���[�v�j { SequentialGroup vg = layout.createSequentialGroup(); { // 1�s�� ParallelGroup pg = layout.createParallelGroup(GroupLayout.Alignment.BASELINE); pg.addComponent(line1Label); pg.addComponent(line1Text); pg.addComponent(line1Button11); pg.addComponent(line1Button12); vg.addGroup(pg); } { // 2�s�� ParallelGroup pg = layout.createParallelGroup(GroupLayout.Alignment.BASELINE); pg.addComponent(line2Label); pg.addComponent(line2List); pg.addComponent(line2Button2); vg.addGroup(pg); } layout.setVerticalGroup(vg); }
�R���|�[�l���g�i�p�l���E�y�C���E�E�B���h�E�i�t���[���j�E�_�C�A���O�j�ɓo�^���ꂽ���C�A�E�g�}�l�[�W���[�́A���̃R���|�[�l���g�̃T�C�Y���ς��ƁA�����I�ɓ����̃R���|�[�l���g�̈ʒu��T�C�Y���v�Z�������B[2009-04-05]
�i�����������ׂ̈Ƀ��C�A�E�g�}�l�[�W���[�Ƃ������̂�����͂��j
�����A�ꍇ�ɂ���ẮA�E�B���h�E�T�C�Y�̕ύX���ɓ���̃R���|�[�l���g�����Ǝ��ɃT�C�Y��ς������Ƃ������������邩������Ȃ��B
�������������ׂɂ́A�T�C�Y�ύX�̃C�x���g��ߑ����A�ύX�O�Ɋe�R���|�[�l���g�̃T�C�Y��ݒ肵�����悢�B
�R���|�[�l���g�̃T�C�Y���ύX���ꂽ���Ƃ����m����C�x���g�́AComponentListener#componentResized()�B
���������̃C�x���g�́A�T�C�Y���ύX���ꂽ���ɔ�������B���������āA����̖ړI�ɂ͎g���Ȃ��B
�i�������T�C�Y�ύX�O�ɔ�������C�x���g�E���X�i�[��������������Ȃ������̂Łj
�R���|�[�l���g�Ń��C�A�E�g�ύX���ɌĂ��doLayout()���I�[�o�[���C�h����Ηǂ������B
�Ǝ��̃��C�A�E�g�}�l�[�W���[�����ɂ́ALayoutManager�C���^�[�t�F�[�X�i���邢�͂������炳��ɔh�����Ă���LayoutManager2�C���^�[�t�F�[�X�j����������B[2009-09-26]
���\�b�h�� | �Ă��^�C�~���O | �������ׂ����e | |
---|---|---|---|
LayoutManager | addLayoutComponent(���O, �R���|�[�l���g) | �@ | �@ |
LayoutManager2 | addLayoutComponent(�R���|�[�l���g, ����) | �R���e�i�ɃR���|�[�l���g���lj����ꂽ�ۂɌĂ��B | �R���|�[�l���g���ɓƎ��̐���i�ʒu���Ƃ��j����������ꍇ�A�����Ŏ����̒��ɕێ����Ă����B �iHashMap<�R���|�[�l���g, ����>�Ƃ��j |
LayoutManager | removeLayoutComponent(�R���|�[�l���g) | �@ | �@ |
LayoutManager | preferredLayoutSize(�R���e�i) | �R���e�i#getPreferredSize()���Ăꂽ���B | �����T�C�Y��Ԃ��B |
LayoutManager | minimumLayoutSize(�R���e�i) | �R���e�i#getMinimumSize()���Ăꂽ���B | �ŏ��T�C�Y��Ԃ��B |
LayoutManager2 | maximumLayoutSize(�R���e�i) | �@ | �ő�T�C�Y��Ԃ��B new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE)�Ƃ��B |
LayoutManager2 | getLayoutAlignmentX(�R���e�i) getLayoutAlignmentY(�R���e�i) |
�@ | �@ |
LayoutManager2 | invalidateLayout(�R���e�i) | ���C�A�E�g�������ɂȂ�ۂɌĂ��B | �ێ����Ă���ʒu�E�T�C�Y���̃N���A�B �K�v�Ȃ���Ζ������ł悢�B |
LayoutManager | layoutContainer(�R���e�i) | �R���|�[�l���g��z�u�i�\���j����ۂɌĂ��B | �R���e�i���̑S�R���|�[�l���g�ɑ��A�ʒu�E�T�C�Y��ݒ肷��B �i�S�R���|�[�l���g = �R���e�i#getComponents()�j �i�R���|�[�l���g#setBounds()���Ăяo���Đݒ�j �i�ʒu����ɂ̓R���e�i#getInsets()���l���ɓ����j |
class MyLayout implements LayoutManager2 { �` }
Container c = frame.getContentPane(); c.setLayout(new MyLayout()); JTextField f1 = new JTextField(); c.add(f1); //���̒��ŁAaddLayoutComponent(f1, null)���Ă��B
frame.setVisible(true); //���ꂪ���s�����ƁA //invalidateLayout()���iJDK1.6�̏ꍇ��2��j�Ă�A���̌�� //layoutContainer()���Ă��B
�i�t���[�����h���b�O���āj�T�C�Y�ύX�i���T�C�Y�j����ƁA�܂�invalidateLayout()���Ă�A����layoutContainer()���Ă��B
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@
�@