Ищем макет, такой как FlowLayout, но позволяющий вам выбирать отдельные выравнивания для каждого компонента - PullRequest
0 голосов
/ 09 февраля 2019

Я искал макет, очень похожий на FlowLayout, но он позволяет вам устанавливать конкретные выравнивания для отдельных объектов вместо того, чтобы все объекты были в одном выравнивании.

Я уже пытался использовать BorderLayout,но так как я не могу разместить несколько объектов в одной и той же области, я теряю одну из двух кнопок, которые я хочу расположить на краю экрана.

Это код, который я сейчас работаю:

closeBtn = new JLabel(" X ");
closeBtn = setUpBtn(closeBtn);
minBtn = new JLabel(" - ");
minBtn = setUpBtn(minBtn);
topText = new JLabel("Text");
topText = setUpBtn(topText);

setBackground(Color.black);
setLayout(new FlowLayout(FlowLayout.RIGHT));
panel.add(topText);
panel.add(minBtn);
panel.add(closeBtn);

и метод setUpBtn:

JLabel setUpBtn(JLabel label) {
    label.setFont(Program.font);
    label.setOpaque(true);
    label.setBackground(Color.BLACK);
    label.setForeground(Color.WHITE);
    return label;
}

, который приводит к этому:

result

Вместо того, чтобы выровнять все по правой сторонеЯ хочу, чтобы часть текста была выровнена по левому краю.

У кого-нибудь есть решение этой проблемы?

Заранее спасибо!

1 Ответ

0 голосов
/ 10 февраля 2019

Я использовал GridBagLayout, как предложил @PrasadKarunagoda, и я играл со значениями weightx, пока не получил то, что мне понравилось.Вот мой окончательный код:

closeBtn = new JLabel(" X");
closeBtn = setUpBtn(closeBtn);
minBtn = new JLabel(" - ");
minBtn = setUpBtn(minBtn);
topText = new JLabel("test");
topText = setUpBtn(topText);
centText = setUpBtn(new JLabel("0%"));
setLayout(new GridBagLayout());
GridBagConstraints con = new GridBagConstraints();

setBackground(Color.black);

con.weightx = 0.7;
con.fill = GridBagConstraints.HORIZONTAL;
con.gridx = 0;
con.gridy = 0;
add(topText, con);

con.weightx = 1;
con.gridx = 1;
add(centText, con);

con.weightx = 0;
con.gridx = 2;
add(minBtn, con);

con.gridx = 3;
add(closeBtn, con);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...