问题
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);
}
};
}
回答1:
for better help sooner post an MCVE
use
paintComponent()for Swing JComponents instead ofpaint()there isn't reason to use
NullLayout, useLayoutManager,override
getPreferredSizeforJPanel, thenJFrame.pack()will generate expectedDimensionon the screenJLabelis transparent, you have tosetOpaqueif you to want to dispalyColorasBackgrounginJlabelyou have to use
repaint(last code line)forMouseEventsandColorforJLabel, override MouseAdaptermiss any, no idea if you would need use transparency or tranclucency, or remove the JLabel
来源:https://stackoverflow.com/questions/21076693/put-jlabel-in-front-of-graphics-2d-rectangle-in-jpanel