- - PR -
Swingにおける画像の表示
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-11-04 21:36
Swingを用いてプログラムを書いています。
現在、JLabelに画像を貼り付けて表示しているのですが、その上にJButtonを表示しようとしても、JLabelに隠れてしまい、JButtonが表示されません。 これは、何か設定をすることにより、JButtonの方を上に表示させることは出来るのでしょうか。 また、paint()の中でdrawImage()を使って画像を表示させると、JButtonを表示することは出来るのですが、ウィンドウを動かしたときに画像がちらついてしまうため、この方法は取っていません。 どのようにすれば、画像の上にボタンを表示させることが出来るのでしょうか。 よろしくお願いします。 | ||||
|
投稿日時: 2004-11-05 00:28
CameFieldさん、こんにちは。
うまくやれば、JLabelのオブジェクト上に JButtonのオブジェクト を表示させることはできます。 しかしボタンに画像を表示させれば、無理に両者を重ねる必要は 無いと思います。 javax.swing.JButton(Icon icon) を使えば、画像付きのボタンを 作れますよ。(ご存知だったかも知れませんが。) | ||||
|
投稿日時: 2004-11-05 01:31
返信ありがとうございます。
少し説明不足だったのですが、JLabelに地図の画像を貼り付けて表示させてあり、 その上に画像つきのボタンを表示させたいと思っています。 そのため、どうしても画像の上にボタンを表示させたいのです。 今のところ、画像付きラベルと画像付きボタンを作成することは出来ています。 しかし、setLayout(null)とsetBounds(・・・)を使って、ラベルの上にボタンを配置しようとすると、ボタンがラベルに隠れてしまうのです。 >うまくやれば、JLabelのオブジェクト上に JButtonのオブジェクト を表示させることはできます。 どのようにすれば可能なのでしょうか。 よろしくお願いします。 | ||||
|
投稿日時: 2004-11-05 04:07
そもそもJLabelじゃなきゃダメなものなのでしょうか?
JPanelなどの格納用コンポーネントに画像を背景として描画し、その上に JButtonなりの部品を配置する方法が自然な気がするのですけどね。。。 取り敢えず、質問が「JLabel上に」という事なのでそれで話しを進めます。 おそらくは javax.swing.JLabelのコンストラクタでImageIconを渡して いるのではないかと思いますが、これを止めてsetIcon()で設定してみて 下さい(add()でJButtonを配置した後で) Icon btn_icon, label_icon; //アイコンの取得は省略。 int x,y,w,h; //配置位置、サイズ。代入省略。 JLabel label = new JLabel(); JButton button = new JButton(btn_icon); label.setLayout(null); label.add(button); button.setBounds(x,y,w,h); label.setIcon(label_icon); これが全ての環境で上手くいくものかどうか分かりませんが、 取り敢えず試しにやってみて下さい。 | ||||
|
投稿日時: 2004-11-05 04:58
訂正です。。。
その後、JLabelのコンストラクタ引数にアイコンを指定したやり方で やってみても問題なく動作しました。。。汗 さっきは、CameFieldさんと同様のJButtonが非表示という状態だったのですが、、 恐らくは単純な記述ミスかなんかだったものと思われます、汗。 CameFieldさんも単純な記述ミスかなんかではないのかなぁ。。。 宜しければ再現可能なソースを載せていただけると助かるのですが。。。 なんか狐につままれたようで、変な気分だなァw | ||||
|
投稿日時: 2004-11-05 09:36
JLayeredPane は使ってる? | ||||
|
投稿日時: 2004-11-06 00:15
返信ありがとうございます。
ラベルの上にボタンが表示できなかった問題ですが、解決できました。 Containerの上にラベルもボタンも表示していたのが問題でした。 JLabelの上にボタンを追加したら、ちゃんと表示されました。 Java初心者なので、JLabelにaddできるとは知りませんでした。 これから、いろいろと応用できそうです。 いろいろとアドバイスありがとうございました。 |
1