简体   繁体   中英

JLabel isn't showing at the center of the screen

I was coding the "questions class" so it will be easier for me to add questions to the grame/game, for whatever reason this how my JFrame looks like:

https://imgur.com/JdrCSXm

Question

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);
    }

}

I tried searching for answers for this weird glitchy JLabel but I seem to not find an answer, please answer if you know what's wrong with my code!

Since the answer label is never added to a visible container ( either time it is created) I must presume you are referring to the question label.

add(question,BorderLayout.PAGE_START);

A component added to the PAGE_START constraint of a BorderLayout is given its preferred height, and stretched to fit the entire available width .

To center the text within the JLabel , use a constructor that specifies the horizontal alignment of the text it displays. Three of the six constructors accept an alignment. This case requires SwingConstants.CENTER .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM