将JLabel放在JPanel中的Graphics 2D Rectangle前面

时间:2014-01-12 15:47:10

标签: java swing panel graphics2d

有没有办法将JLabel放在矩形的前面?目前,JLabel位于矩形下方。

以下是我的相关代码:

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

}

1 个答案:

答案 0 :(得分:2)

  1. 在发布MCVE

  2. 后尽早获得更好的帮助
  3. paintComponent()用于Swing JComponents而不是paint()

  4. 没有理由使用NullLayout,使用LayoutManager

  5. 覆盖getPreferredSize的{​​{1}},然后JPanel将在屏幕上生成预期的JFrame.pack()

  6. Dimension是透明的,如果您想在JLabel

    <中将setOpaque显示为Color,则必须Backgroung / LI>
  7. 您必须Jlabel使用repaint(last code line)MouseEvents使用Color,覆盖MouseAdapter

  8. 错过任何一个,不知道你是否需要使用透明度或tranclucency,或删除JLabel