Код: Выделить всё
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
public class GridBagLayoutDemo {
public static void main(String[] args) {
Container mainPanel = createMainPanel();
JFrame frame = new JFrame("GridBagLayout Demo");
frame.setContentPane(mainPanel);
frame.setLocationRelativeTo(null);
frame.pack();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private static Container createMainPanel() {
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.anchor = GridBagConstraints.WEST; // which, I figure, means LEFT in plain English
constraints.weightx = 1;
constraints.weighty = 1;
constraints.fill = GridBagConstraints.VERTICAL;
panel.add(createLabelOne(), constraints);
panel.add(createLabelTwo(), constraints);
return panel;
}
private static JLabel createLabelOne() {
JLabel label = new JLabel("Test label 1");
label.setOpaque(true);
label.setBackground(Color.LIGHT_GRAY);
return label;
}
private static JLabel createLabelTwo() {
JLabel label = new JLabel("Test label 2");
label.setOpaque(true);
label.setBackground(Color.PINK);
return label;
}
}
Мне нужна вертикальная заполнение, так что я не могу использовать Flowlayout или boxlayout . PrettyPrint-Override ">
Код: Выделить всё
private static Container createMainPanel() {
JPanel panel = new JPanel();
BoxLayout layout = new BoxLayout(panel, BoxLayout.X_AXIS);
panel.setLayout(layout);
panel.add(createLabelOne());
panel.add(createLabelTwo());
panel.add(Box.createGlue());
return panel;
}
В основном мне нужно эффективно объединить вертикальное заполнение на первом экране с горизонтальным положением на втором экране. Java 8.
Подробнее здесь: https://stackoverflow.com/questions/796 ... o-one-side