Существует ряд возможных решений, возможно, наиболее полезным, однако, является GridBagLayout
, а сложный, он очень гибкий.
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Test {
public static void main(String[] args) {
new Test();
}
public Test() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
public TestPane() {
setLayout(new GridBagLayout());
JLabel label = new JLabel("Cool");
label.setFont(label.getFont().deriveFont(Font.BOLD, 48f));
label.setOpaque(true);
label.setBackground(Color.WHITE);
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
add(label, gbc);
add(new JLabel("3+5="), gbc);
add(new JCheckBox("5"), gbc);
add(new JCheckBox("3"), gbc);
add(new JCheckBox("6"), gbc);
add(new JCheckBox("9"), gbc);
add(new JCheckBox("23"), gbc);
}
}
}
Вы можете использовать даже anchor
для перемещения компонентов в разных позициях внутри там клеток ...
gbc.anchor = GridBagConstraints.WEST;
Они могут, очевидно, быть применены к отдельным компонентам, так что каждый компонент может иметь собственный набор ограничений
Посмотрите How to Use GridBagLayout для получения более подробной информации
Вы можете добавить скриншот текущего интерфейса вы имеете и объяснить проблему? – shan1024
http://i.stack.imgur.com/nGrlF.png – Xlerone
1) Чтобы лучше помочь, отправьте сообщение [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). 2) Чтобы сжать один столбец «GridLayout» до минимума, который ему нужен в верхней или нижней части контейнера, поместите панель с макетом сетки в 'PAGE_START' или' PAGE_END' ограничение 'BorderLayout'. –