ЯВА: Почему у меня не может быть более двух JLabels в одной вертикальной позиции (разные горизонтальные позиции)? - PullRequest
0 голосов
/ 03 марта 2019

Я создаю графический интерфейс с тремя метками.Я использовал метод setBounds для каждой метки, и первые две метки находятся в позициях x и y, которые я передал в параметрах.Тем не менее, третий ярлык просто сидит слева.

Вот мой код:

principleLabel = new JLabel(); 
principleLabel.setText("Principle");
principleLabel.setBounds(101, 10, 100, 50);
frame.getContentPane().add(principleLabel); 

rateLabel = new JLabel(); 
rateLabel.setText("Rate (Percentage)");
rateLabel.setBounds(295, 10, 150, 50);
frame.getContentPane().add(rateLabel); 

yearsLabel = new JLabel(); 
yearsLabel.setText("Years");
yearsLabel.setBounds(555, 10, 50, 50);
frame.getContentPane().add(yearsLabel); 

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

My GUI

Буду признателен за любую помощь.Спасибо.

1 Ответ

0 голосов
/ 03 марта 2019

Руководство по использованию абсолютного позиционирования можно найти здесь .

Менеджер компоновки для контейнера должен быть равен нулю.(Не видно, делаете ли вы это или нет из показанного кода.) Метод setbounds используется для всех компонентов в контейнере.(Похоже, вы делаете это.) Необходимо вызвать метод перекраски контейнера.

Если вы изменили размер или если компонент не помещается в пределах контейнера, яНепонятно, что именно произойдет.

Если бы я выкладывал вещи, я бы, вероятно, попытался пойти по простому в JavaFX маршруту, где используется комбинация вложенных макетов HBox и VBox.После использования Swing прошло много времени, но я подозреваю, что вы могли бы сделать это с кучей макетов Box во вложенных JPanels.

Например, каждая пара меток и элементов управления текстом будет представлять собой собственную JPanel с вертикальным прямоугольником.компоновка и три пары будут вложены в JPanel с горизонтальной компоновкой.(Поток тоже может быть в порядке.) Строка кнопок будет в своем собственном JPanel.Я думаю, вы поняли.

...