Overlay a JButton over JLabel in Java Swing?

爱⌒轻易说出口 提交于 2020-01-03 11:47:07

问题


Is it possible to overlay a Button over a Label in Swing?

For example, if have a JLabel with image and no text, and i want to overlay my button over this JLabel. Label is defined something like:

myLabel = new javax.swing.JLabel(new ImageIcon( myPicture ));  

If not, then any ideas how can i realize this, thank you.

EDIT: Actually i read about adding JPanel to a JLabel, when i add a Panel with button layout, it compiles fine but nothing is visible, just the JLabel with image

UPDATE: As suggested by @paranoid-android, somehow i have solved my problem. However i still have to know how can i customize the positions of components overlayed on top of JLabel as i don't have much control (probably because normally i use netbeans for drawing layouts, and this would require hard coding).

Something Like this worked:

ImagePanel(Image image, int id) {
    this.image = image;
    this.tile = false;

    JButton backButton = new JButton();
    JButton nextButton = new JButton();
    backButton.setText(" BACK ");
    nextButton.setText(" NEXT ");


    add(backButton);
    add(nextButton);

};

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
}

回答1:


You can do it using a JLayeredPane, although if I understand correctly, the absolute best way to do that would be to override paintComponent:

// as part of your JPanel
@Override
public void paintComponent(Graphics g){
     super.paintComponent(g);
     g.drawImage(background, 0, 0, this);
}

Then you can add components to the panel as you like, without the need for the JLabel.




回答2:


You can overlap the button and the label, but you would have to do this with a Fixed Layout. You might be able to pull if off with a gridBagLayout, but I doubt it.

Here is more on what you will need.

http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html



来源:https://stackoverflow.com/questions/9137404/overlay-a-jbutton-over-jlabel-in-java-swing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!