5

Swingのラベルの上にボタンをオーバーレイすることは可能ですか?

たとえば、画像がありテキストがないJLabelがあり、このJLabelの上にボタンをオーバーレイしたい場合です。ラベルは次のように定義されます。

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

そうでない場合は、どのように私はこれを実現することができますか、ありがとう。

編集:実際に私は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);
}
4

3 に答える 3

9

を使用してそれを行うことができますがJLayeredPane、私が正しく理解していれば、それを行うための絶対的な最善の方法はオーバーライドすることですpaintComponent:

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

その後、必要なく、必要に応じてパネルにコンポーネントを追加できますJLabel

于 2012-02-04T01:15:19.107 に答える
2

ボタンとラベルを重ねることができますが、固定レイアウトでこれを行う必要があります。gridBagLayoutを使用すればプルできるかもしれませんが、私はそれを疑っています。

ここにあなたが必要とするものの詳細があります。

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

于 2012-02-04T01:00:55.057 に答える