JLabel 未显示在屏幕中央

JLabel isn't showing at the center of the screen

我正在编写“问题 class”,因此我可以更轻松地向 grame/game 添加问题,无论出于何种原因,我的 JFrame 看起来像这样:

https://imgur.com/JdrCSXm

问题

package project.school.code;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Question extends JPanel{

    private String canswer;
    private String wanswer;
    private JButton correct;
    private JButton wrong;
    private JLabel question;
    private String qask;
        
    //Setter and getter for qask and canswer and wanswer

    public Dimension getPrefrredSize() {
        return new Dimension(1920,1920);
    } 
    
    public Question(String correctAnswer,String NotCorrect,String Ask,Font qfont) {
        this.qask = Ask;
        this.canswer = correctAnswer;
        this.wanswer = NotCorrect;
        this.correct = new JButton(canswer);
        this.wrong = new JButton(wanswer);
        this.question = new JLabel();
        this.question.setText(Ask);
        this.question.setFont(qfont);
        
        JPanel buttons = new JPanel();
        buttons.setPreferredSize(new Dimension(500,500));
        
        setLayout(new BorderLayout());
        this.correct.setPreferredSize(new Dimension(250,250));
        this.correct.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                Main.setCorrectans(Main.getCorrectans() + 1);
                
                JFrame GOODJOB = new JFrame("עבודה טובה!");
                Font tbf = new Font(null,Font.BOLD, 0);
                Font text = tbf.deriveFont(20f);
                JLabel answer = new JLabel("כל הכבד עניתה נכון!");
                answer.setFont(text);
                GOODJOB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                GOODJOB.setLayout(new BorderLayout());
                GOODJOB.setPreferredSize(new Dimension(500,500));
                GOODJOB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                GOODJOB.getContentPane().add(answer, BorderLayout.PAGE_START);
                GOODJOB.pack();
                GOODJOB.setVisible(true);
            }}
        );
        
        
        this.wrong.setPreferredSize(new Dimension(250,250));
        this.wrong.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                JFrame GOODJOB = new JFrame("עבודה גרועה!");
                Font tbf = new Font(null,Font.BOLD, 0);
                Font text = tbf.deriveFont(20f);
                JLabel answer = new JLabel("!עניתה לא נכון");
                answer.setFont(text);
                GOODJOB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                GOODJOB.setLayout(new BorderLayout());
                GOODJOB.setPreferredSize(new Dimension(500,500));
                GOODJOB.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                GOODJOB.getContentPane().add(answer,BorderLayout.PAGE_START);
                GOODJOB.pack();
                GOODJOB.setVisible(true);
            }}
        );
        buttons.add(wrong,BorderLayout.EAST);
        buttons.add(correct,BorderLayout.WEST);
        add(question,BorderLayout.PAGE_START);
        add(buttons, BorderLayout.PAGE_END);
    }

}

我尝试为这个奇怪的故障搜索答案JLabel,但我似乎找不到答案,如果您知道我的代码有什么问题,请回答!

由于 answer 标签从未添加到可见容器中(无论是在 创建时)我必须假定您指的是 question标签。

add(question,BorderLayout.PAGE_START);

添加到 BorderLayoutPAGE_START 约束的组件被赋予其首选高度,并拉伸以适应 整个可用宽度

要使文本在 JLabel 中居中,请使用 constructor 指定所显示文本的水平对齐方式。六个构造函数中的三个接受对齐。这种情况需要 SwingConstants.CENTER.