【最大10000ポイント】当たる!!質問投稿キャンペーン!

メインパネルがあります。メインパネルには絵が貼り付けてあります。
で、そのメインパネルに白で字を書きたいのですがなにか良い方法はありませんでしょうか?

考えたのは、メインパネルにラベルを張るって方法でしたがラベルを貼ると字は書けるのですが四角いラベルで目インパネルの絵が消えてしまいます。ラベルの字部分以外が透けてしまえば解決なのですが、方法がまたわかりません・・・
どうかお知恵をください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

paintメソッド内で行って下さい。



//Print
public void paint(Graphics g) {
 if (g.drawImage(im, 0, 0, this) != true) {
  System.out.println("ng");
 }
}

の部分を

//Print
public void paint(Graphics g) {

 super.paint(g);

 if (g.drawImage(im, 0, 0, this) != true) {
  System.out.println("ng");
 }else{
  /* 色を設定 */
  g.setColor(Color.white);
  /* 文字を描画*/
  g.drawString("abcdefg", 50, 50);
 }
}

とでもすればいいと思いますが。

ただし、Panelの場合paintメソッドがうまくいくかは、
試していないのでわかりません。

ダメなときは、Canvasから継承してみてください。


それと、

public class New_Panel extends Panel{
Image im;
Graphics g;


Graphics g;
は不必要なのでは?

必要のないフィールドは、混乱・バグの元になりますよ。
もし、必要なのであれば変数名を変えておいた方がいいと
思います。
    • good
    • 0
この回答へのお礼

質問しすぎで、自分が何を質問したか忘れてました・・・
お礼が遅くなりすみませんです。

教えていただいた通りにしたらできました。
ありがとうございました。

お礼日時:2003/05/19 16:27

一応AWTのことで説明しておきます。



最初に描画の対象ですが、一般に文字や図形を描く場合、
java.awt.Canvasを使用します。
これのpaintメソッドをオーバーライドしたものを
使用します。

public XCanvas
     extends Canvas
{
  public paint(Graphics g){
   /* 色を設定 */
   g.setColor(Color.white);
   /* 文字を描画*/
   g.drawString("abcdefg", 50, 50);
  }
}

このとき、
 g.drawString("abcdefg", 50, 0);
とすると見えなくなってしまいますから注意してください。
(drawStringで指定する座標が文字の左上ではないため)



ちなみに、swingを使った場合、背景が透明なラベル(JLabel)を
使うことができます。
    • good
    • 0
この回答へのお礼

またまたngsvxさん、ありがとうございます。

教えていただいたロジックはどこに書けばよいのでしょう?
現在、絵を張る為にパネルを継承した新しいクラスを作りました。そのクラスで作ったパネルに字を書きたいのですが、ロジックはそのパネルクラス内に書けばよいのでしょうか?

下記のクラスのパネルをメインフレーム内で作成しております。

例)
package ***;

import java.awt.*;

public class New_Panel extends Panel{
Image im;
Graphics g;

//CONSTRUCT
public NewPanel(String img) {
im = Toolkit.getDefaultToolkit().getImage(img);

//MediaTracker画像入力監視
MediaTracker mt = new MediaTracker(this);
mt.addImage(im, 0);
try {
mt.waitForID(0);
}
catch (InterruptedException e) {
}
}

//Print
public void paint(Graphics g) {
if (g.drawImage(im, 0, 0, this) != true) {
System.out.println("ng");
}
}
}

お礼日時:2003/05/16 09:24

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング