Я довольно новичок в Java и программировании в целом, и я столкнулся с проблемой, которую не могу решить. В моей программе у меня есть два JPanel, содержащие JLabel и три JButton соответственно, и панели расположены в GridLayout внутри фрейма.
Моя проблема в том, что я не могу заставить текст в JLabel сидеть в центре к северу от первого JPanel. Первоначально я использовал FlowLayout, который располагал его в нужной мне ориентации, но когда содержащаяся строка становилась длиннее определенной длины, она просто выходила за пределы экрана. При текущей настройке текст переносится соответствующим образом, но всегда начинается с выравнивания по левому краю.
Пример снимка экрана пользовательского интерфейса
Я искал по всему сайту и просматривал при множественных ответах - действительно, я думал, что моя проблема будет решена с помощью HTML (это решает проблему переноса и выравнивает вторую строку по центру, как показано ниже) - но я все еще не могу понять, как выровнять первую строку централизованно.
Пример использования более длинной строки
Вот мой текущий код:
import java.awt.*;
import javax.swing.*;
public class UITests extends JFrame {
private JLabel txtWindow = new JLabel();
private JButton jb1 = new JButton();
private JButton jb2 = new JButton();
private JButton jb3 = new JButton();
private final Font font = new Font("Serif", Font.PLAIN, 12);
public UITests() {
//Creating the top panel for the JLabel
JPanel panelA = new JPanel(new BorderLayout());
txtWindow.setForeground(Color.white);
txtWindow.setFont(new Font("", Font.PLAIN, 15));
txtWindow.setText("<html><div style='text-align: center;'>" + "Mellon"
+ "</div></html>");
panelA.setBackground(Color.BLACK);
panelA.add(txtWindow, BorderLayout.NORTH);
//Creating the bottom panel for the JButtons
JPanel panelB = new JPanel(new GridLayout(3, 1, 5, 5));
//setting up button properties
jb1.setBackground(Color.BLACK);
jb2.setBackground(Color.BLACK);
jb3.setBackground(Color.BLACK);
jb1.setForeground(Color.white);
jb2.setForeground(Color.white);
jb3.setForeground(Color.white);
jb1.setFocusPainted(false); //Stopping highlighting of button
jb2.setFocusPainted(false);
jb3.setFocusPainted(false);
jb1.setFont(font);
jb2.setFont(font);
jb3.setFont(font);
panelB.setBackground(Color.BLACK);
panelB.add(jb1);
panelB.add(jb2);
panelB.add(jb3);
setLayout(new GridLayout(2, 1, 0, 0));
add(panelA);
add(panelB);
setTitle("Screen");
setSize(500, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new UITests();
}
}
Любая помощь с этим будет принята с благодарностью, и извинения, если существует очень похожий вопрос; Я сделал все возможное, чтобы найти его!