Начните с чтения Компоновка компонентов внутри контейнера и Как использовать разделенные панели , которые содержат множество примеров.
Схемы качания ленивы,Это означает, что до тех пор, пока вы целенаправленно не запустите этап макета, любые изменения не будут отражены в пользовательском интерфейсе (пока не будет запущен этап макета, например изменение размера окна или его отображение в первый раз).
Хотя вы можете вызывать revalidate
и repaint
для контейнера, который вы меняете, в вашем случае простой вызов setVisible
last будет иметь тот же желаемый эффект
Спасибо, так что с этим я 'я просто получаю последний флажок, флажок 9 отображается, но не дает разделенного экрана или цвета: (
Это потому, что JFrame
по умолчанию использует BorderLayout
, который позволяет толькоодин компонент для управления в любой из пяти доступных позиций. Вместо этого вам нужно добавить флажки к одному из контейнеров в разделенной панели.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.util.ArrayList;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
public class CheckBox2 extends JFrame {
private ArrayList<JCheckBox> boxes = new ArrayList<JCheckBox>();
JSplitPane splitPane;
private JPanel leftPanel;
private JPanel rightPanel;
public CheckBox2() {
leftPanel = new JPanel(new GridBagLayout());
rightPanel = new JPanel(new GridBagLayout()) {
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
};
splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, new JScrollPane(rightPanel));
leftPanel.setBackground(Color.BLUE);
rightPanel.setBackground(Color.RED);
add(splitPane);
addBoxes();
}
void addBoxes() {
int i = 0;
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
for (i = 0; i < 10; i++) {
leftPanel.add(new JCheckBox("word" + i), gbc);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
CheckBox2 cb = new CheckBox2();
cb.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
cb.pack();
cb.setLocationRelativeTo(null);
cb.setVisible(true);
}
}