JFrame имеет BorderLayout в качестве макета по умолчанию.
В вашем методе initFrame()
при вызове
add(mainPanel);
add(text);
add(category);
add(mintemp);
add(maxtemp);
Вы добавляете все компоненты свинга в JFrame
.Поскольку вы не указываете положение компонента, и, поскольку JFrame
имеет BorderLayout
, только один компонент добавляется к JFrame
, который является последним компонентом, который вы добавляете в него, и это maxtemp Jlabel.
Вы должны указать положение компонента при добавлении в JFrame с BorderLayout следующим образом:
add(minTemp, BorderLayout.NORTH);
Я предлагаю вам узнать больше о BorderLayout и LayoutManagers.
ИЛИ
Вы можете использовать код, подобный этому,
// Swing components
mainPanel = new JPanel(new GridLayout(4, 1));
text = new JLabel();
category = new JLabel();
mintemp = new JLabel();
maxtemp = new JLabel();
link = new JLabel();
// Add to the mainPanel
mainPanel.add(text);
mainPanel.add(category);
mainPanel.add(mintemp);
mainPanel.add(maxtemp);
//Add mainPanel to Frame
add(mainPanel);
Приведенный выше код выполняет следующее:
mainPanel = new JPanel(new GridLayout(4, 1));
Эта строка набора кодаGridLayout как макет главной панели.GridLayout - это тип менеджера компоновки, который делит контейнер (mainPanel) на равное количество сеток, разделяя его на строки и столбцы.В данном коде я разделил mainPanel на 4 строки и 1 столбец, таким образом, всего 4 сетки.
mainPanel.add (text);mainPanel.add (категория);mainPanel.add (mintemp);mainPanel.add (maxtemp);
Этот набор кода добавляет компоненты колебания к главной панели.Когда выполняется первая строка кода, текстовая метка добавляется в mainPanel в первой сетке.Аналогично, вторая строка добавляет категорию во вторую сетку и аналогична для остальных.
add(mainPanel);
Эта строка кода добавляет mainPanel к кадру.
Если вы выполнили приведенный выше код, вывод будет аналогичным,
Примечание: Я изменил текст меток, как показанона изображении выше.