在Java Swing中通过JLabel覆盖JButton?

Joh*_*dep 5 java swing jlabel jbutton imageicon

是否可以在Swing中将Button叠加在Label上?

例如,如果有一个带有图像的JLabel而没有文本,我想在我的JLabel上覆盖我的按钮.标签定义如下:

myLabel = new javax.swing.JLabel(new ImageIcon( myPicture ));  
Run Code Online (Sandbox Code Playgroud)

如果没有,那么任何想法我怎么能意识到这一点,谢谢.

编辑:其实我读到有关添加JPanel到JLabel,当我添加一个面板按钮布局,它编译得很好,但没有任何可见,只是JLabel与图像

更新:正如@ paranoid-android所建议的那样,我已经解决了我的问题.然而,我仍然必须知道如何自定义覆盖在JLabel顶部的组件的位置,因为我没有太多的控制(可能因为通常我使用netbeans绘制布局,这将需要硬编码).

像这样的东西有效:

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);
}
Run Code Online (Sandbox Code Playgroud)

rth*_*sen 9

您可以使用a来完成JLayeredPane,但如果我理解正确,绝对最好的方法是覆盖paintComponent:

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

然后,您可以根据需要向面板添加组件,而无需使用JLabel.