Search code examples
javaswingjlabel

JLabel not Centering


So I have been working on a java program an i am trying to get the JLabel centered in the middle of the window, but what ever I do the label is only at the top center. I am hoping someone can help find a way to get the text centered in the middle of the window. Here is my code:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;

public class Lottery extends JPanel implements ActionListener {


    private static final long serialVersionUID = 5815877011755522230L;

    private JLabel label;

    public static void main(String[] args) {    
        make();

    }

    public Lottery() {

        label = new JLabel("Hello There");
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setVerticalAlignment(JLabel.CENTER); 
        add(label);

    }

    public static void make(){
        JFrame frame = new JFrame("Lottery");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Lottery hi = new Lottery();
        frame.setContentPane(hi);

        frame.setSize(600, 600);
        frame.setVisible(true);

    }


}

Can someone please help me solve this issue.


Solution

  • replace add(label); with:

    setLayout(new BorderLayout());
    add(label, BorderLayout.CENTER);
    

    and don't forget to import java.awt.BorderLayout;

    Your code aligns text within the label, but label itself is not centered in your panel. And you'll have to tinker around layouts anyway.

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.SwingConstants;
    import javax.swing.SwingUtilities;
    
    import java.awt.BorderLayout;
    
    public class Lottery extends JPanel {
    
    
        private static final long serialVersionUID = 5815877011755522230L;
    
        private JLabel label;
    
        public static void main(String[] args) {
            make();
    
        }
    
        public Lottery() {
    
            label = new JLabel("Hello There");
            label.setHorizontalAlignment(JLabel.CENTER);
            label.setVerticalAlignment(JLabel.CENTER);
            //add(label);
            setLayout(new BorderLayout());
            add(label, BorderLayout.CENTER);
    
        }
    
        public static void make(){
            JFrame frame = new JFrame("Lottery");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            Lottery hi = new Lottery();
            frame.setContentPane(hi);
    
            frame.setSize(600, 600);
            frame.setVisible(true);
    
        }
    
    
    }
    

    Screenshot: https://postimg.org/image/67vjv79jh/