Как сделать зазор между рамой и компонентом? - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь попрактиковаться в GUI, и у меня возникают проблемы с зазором между компонентом и рамой. enter image description here

Изображение выше - это то, что у меня есть до сих пор. Но я действительно хочу поставить разрыв между левой стороной рамки и «label1».

private void initialize() {
    frame = new JFrame();
    frame.setTitle("WINDOW");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 300);

    panel = new JPanel();
    panel.setLayout(new BorderLayout());

    bottomPanel = new JPanel();
    bottomPanel.setLayout(new GridLayout(1, 5));
    l1 = new JLabel("Label1");
    l2 = new JLabel("Label2");
    l3 = new JLabel("Label3");
    l4 = new JLabel("Label4");
    l5 = new JLabel("Label5");
    bottomPanel.add(l1);
    bottomPanel.add(l2);
    bottomPanel.add(l3);
    bottomPanel.add(l4);
    bottomPanel.add(l5);

    panel.add(bottomPanel, BorderLayout.SOUTH);
    frame.add(panel);
}

Выше приведен мой код. Я попытался сделать: bottomPanel.setLayout (новый GridLayout (1, 5, -20, 0)); поставить некоторый горизонтальный зазор, но это только добавил зазор между компонентами. Это не сдвинуло "label1" от кадра. Есть ли другой способ сделать это? Я очень новичок в Java, поэтому я не знаю много других трюков. Буду признателен за любую помощь! Спасибо!

Ответы [ 3 ]

1 голос
/ 16 марта 2020

Другие ответы - помадки, которые не достигнут желаемого эффекта при изменении размера GUI. Вместо этого используйте:

JLabel.setHorizontalAlignment(SwingConstants.CENTER);

Центрируя текст в пределах JLabel в сочетании с GridLayout, растягивая компоненты на всю ширину ячейки, каждая метка будет иметь столько же места с обеих сторон, что и GUI можно разрешить. Например, вот эффект, когда GUI имеет минимальный размер.

enter image description here

А при растяжении шире:

enter image description here

(добавлена ​​красная рамка для отображения границ каждой метки.)

0 голосов
/ 10 марта 2020

Попробуйте выполнить следующее: bottomPanel.add (javax.swing.Box.createHor horizontalStrut (10));

0 голосов
/ 10 марта 2020

Добавьте Border на панель:

bottomPanel = new JPanel();
bottomPanel.setBorder( new EmptyBorder(0, 10, 0, 0) );

Прочтите раздел из учебника Swing по Как использовать границы для получения дополнительной информации о различных границах, которые вы можете создать.

...