noobprogrammer
noobprogrammer

Reputation: 1154

Put JLabel in front of Graphics 2D Rectangle in JPanel

Is there any way to put the JLabel in front of the rectangle? Currently, the JLabel is underneath the rectangle.

Here is my relevant code:

public class MainMenu_South extends JPanel {
        MainMenu_BlueJay t; 
        JLabel start=new JLabel("START");

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.blue);
        g2d.drawRect(0, 30, 900, 30); 
        g2d.fillRect(0, 30, 900, 30);
    }

    public MainMenu_South(MainMenu_BlueJay t){

        setLayout(null);
        this.t=t;
        setBackground(Color.white);

        start.setForeground(Color.red);
        start.setFont(new Font("Arial", Font.BOLD, 16));

        add(start);
        start.setBounds(100, 10, 100, 50);
        start.addMouseListener(ml);
    }

    MouseListener ml=new MouseListener() {

        @Override
        public void mouseEntered(MouseEvent e) {//hover
           start.setForeground(Color.white);
        }

        @Override
        public void mouseExited(MouseEvent e) {
            start.setForeground(Color.red);
        }
    };

}

Upvotes: 0

Views: 1291

Answers (1)

mKorbel
mKorbel

Reputation: 109813

  1. for better help sooner post an MCVE

  2. use paintComponent() for Swing JComponents instead of paint()

  3. there isn't reason to use NullLayout, use LayoutManager,

  4. override getPreferredSize for JPanel, then JFrame.pack() will generate expected Dimension on the screen

  5. JLabel is transparent, you have to setOpaque if you to want to dispaly Color as Backgroung in Jlabel

  6. you have to use repaint(last code line) for MouseEvents and Color for JLabel, override MouseAdapter

  7. miss any, no idea if you would need use transparency or tranclucency, or remove the JLabel

Upvotes: 2

Related Questions