有没有办法将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);
}
};
}
答案 0 :(得分:2)
在发布MCVE
将paintComponent()
用于Swing JComponents而不是paint()
没有理由使用NullLayout
,使用LayoutManager
,
覆盖getPreferredSize
的{{1}},然后JPanel
将在屏幕上生成预期的JFrame.pack()
Dimension
是透明的,如果您想在JLabel
setOpaque
显示为Color
,则必须Backgroung
/ LI>
您必须Jlabel
使用repaint(last code line)
,MouseEvents
使用Color
,覆盖MouseAdapter
错过任何一个,不知道你是否需要使用透明度或tranclucency,或删除JLabel