• ベストアンサー

ボタンに絵をはる方法(JBuilder)

JBuilderを使用してプログラムを組んでいるのですが、ボタンに絵を張りたいのです。 使用しているボタンはAWTコンポーネント内の"java.awt.Button"です。 ちなみにJBuilder Personal 8.0使用です。

  • t-tree
  • お礼率83% (183/218)
  • Java
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

絵を貼る、というか、paint()メソッドをオーバライドして その中でdrawImage()を使えばだいたいのコンポーネントにイメージが描画できます。 Buttonにだってやればできるんです。ただ、継承しなければならないのです。 Swingの方のJButtonは継承しなくてもイメージが貼り付けられるので、その点が簡単ということです。 Buttonにイメージを貼り付けるサンプルを書きます。 (コンストラクタは省略している) ------------------ import java.awt.*; public class ButtonA extends Button{ Image im = Toolkit.getDefaultToolkit().getImage("a.jpg"); public void paint(Graphics g){ g.drawImage(im, 3, 3, getSize().width - 6, getSize().height - 6, this); } } ----------------- このButtonAを、Buttonのかわりに使用すると中にa.jpgが表示されます。 ただ、ボタンのテキストは覆い隠されてしまいます。 #Canvasを使って自作すると言ったけど、こっちの方が簡単だったな。

t-tree
質問者

お礼

たびたびのご回答ありがとうございます。 まだJavaやJBuilder初心者の為、教えていただいたロジックをテストしてみようと思います。ありがとうございます。

その他の回答 (1)

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

AWTのButtonには絵を貼り付けることはできなかったはずです。 SwingのJButtonにしませんか?それなら簡単なんだけど…。 もっとも全部をSwingにしなければならないなあ。 どうしてもAWTで実現するならば、Canvasを使ってボタンを自作するとか。

t-tree
質問者

お礼

ご回答ありがとうございます。 >AWTのButtonには絵を貼り付けることはできなかったはずです。 そうなんですか・・・勉強不足でした。 AWTのコンポーネントで絵を張ることのできるコンポーネントはありますか? >どうしてもAWTで実現するならば、Canvasを使ってボタンを自作するとか。 具体的にどのような事でしょう? VBやDelphiのようには簡単でないのですね・・・

関連するQ&A

  • JBuilder6 personalについてですが・・・。

    Delphiを使っていたことがあるJAVAの初心者なんですが、フリーのJBuilder6 personalはJAVA初心者が扱うにはどうなんでしょうか?JAVAを基礎から学ぶのにJBuilder6 personalを使ってDOS画面にプログラムの実行結果を表示させることは出来るのでしょうか? どうもJDKでコマンド入力がうまくいかず困っているのでもしJBuilder6 personalが使えるならそちらでJAVAを学ぼうと思います。 簡単な質問すぎるかもしれませんが至急お教えいただきたいと思っています。よろしくお願いします。

  • JBuilder5.0インストールについて

    JBuilder5.0Personal本体をインストールしたのですが、どうしてもJBuilderドキュメント及び、JBuilderのサンプルプログラムがインストール出来ません、どのようにしたらインストールできますか? ちなみに、使用OSは、MEです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • JBuilder7で...

     今、JBuilder7 PersonalでJavaアプリケーションを制作しているのですが、Javaでは、他の言語のようにWin32APIを使用することはできないのでしょうか?  Bitbltを使いたいのですが、もしAPIは使えないのでしたらBitbltに代わるメソッドなどを教えていただければありがたいです。(VBでいうPaintPictureなど) ちなみに、VB歴1年半、Java歴2ヶ月です。宜しくお願いします。

    • ベストアンサー
    • Java
  • JBuilderでの createImage関数について

     Javaプログラムの初心者で、簡単なアプレットの作成 から学習しています。これまでJBuilderを使わずにプロ グラムをしていましたが、今回JBuiler5のPersonal版を 使ってみようと思い、これまで作ったプログラムの移植 をしてみました。  この時に、これまでは問題なく動いていたオフスクリ ーングラフィックを作成する以下の関数が失敗(返値が null)になるようになってしまいました。 offImage = createImage(300,300); createImageに関してのドキュメント等を参照しましたが 原因が解りません。JBuilderでの環境で変更が必要等の 対処があれば、教えていただけないでしょうか?  よろしくお願いします。

  • JBuilder 7Personalについて

    はじめまして。最近Javaを始めた者です。 Borland社のJBuilder 7Personalをインストールし、Javaプログラム練習しています。 JBuilder 7Personalで新規プロジェクトを作成し、新規ファイルでGUIを追加した時に、Frame.javaのファイルは作成されるのですが、Frame.htmlのファイルが自動作成されなくて困っています。私の使っている参考書には、htmlファイルも同時に作成されると書いてあります。ですが自動的に作成されなかった場合の対処方法が書いてないです。 自分でFrame.htmlのファイルを作ってプロジェクトのフォルダに追加してもコンパイルした時にエラーが出ます。たぶん追加したファイル分のソースが追加されていないのが原因だと思いますが、どんなソースを追加すればいいのかわからないのです。 htmlファイルなしでコンパイルしてプロジェクトを実行してもGUIが表示されません?(実行はされているみたいです。) JBulder7をお使いの方、アドバイスをお願いします。

    • ベストアンサー
    • Java
  • ボタンとダイアログの関連性

    import java.awt.*; import java.awt.event.*; public class ActionListenerTest extends Frame implements ActionListener { ActionListenerTest() { super("ActionListenerTest"); Button b1 = new Button("BUTTON"); b1.addActionListener(this); add(b1); setSize(200, 100); setVisible(true); } public void actionPerformed(ActionEvent evt) { String ac = evt.getActionCommand(); if( ac == "BUTTON") { /*ここでの操作でダイアログを表示させたい*/ } } public static void main(String [] args) { new ActionListenerTest(); } } 表示されたフレーム内のボタンを押したときに、ダイアログを表示させたいです。コメントアウトした部分でダイアログを表示させたいのですが、ダイアログの定義はActionListenerTest() 内にて行うのでしょうか? またダイアログ内でボタンを作り、そのボタンの操作を行うときは、フレームでのボタンと同様にString ac = evt.getActionCommand(); ---でいいのでしょうか? どなたかご教授願います。 汚いプログラムすいません。

    • ベストアンサー
    • Java
  • JBuilderの入門ページで

    JBuilder9Personal(無償)で HelloWorldを作っていたのですが 一つの操作をするたびに5から10間ビジー状態になり 超スローで動作します。 JBuilder7を使っていたときにはこんなことはなかったように記憶しています。 これは何か設定が悪いのでしょうか? Borlandがいたずらをしているのでしょうか? ちなみに98seで400MHzペンチアム互換です。

    • ベストアンサー
    • Java
  • Visual J++ 6やJBuilder6

    JAVAの勉強を始めようとしているものです。 Visual C++ 6.0やJBuilder6.0で今でもプログラミングしているのですが Visual J++ 6.0やJBuilder6.0は現在のWindows環境でも使用可能でしょうか。 オークションで安値で取引されているので気になりました。 Eclipseと比べてどうでしょうか。

    • ベストアンサー
    • Java
  • JBuilder6

    今、JBuilder6でネットワーク用のjavaプログラムを作ろうかという話です。 import java.util.*; import java.io.*; import org.w3c.dom.*; import javax.xml.parsers.*; //import org.apache.crimson.tree.XmlDocument; ↑これ入れるとないといわれる。どこにあるのでしょう? ... Document doc = new XmlDocument(); の所を、コンパイルしようとすると、 "xxx.java": エラー #: 300 : クラス XmlDocument が見つかりません: クラス xx.xxxx.xxxxx 行 xx, 列 xx というエラーメッセージが出ます。 この原因と対策についてどなたかご存知の方がいましたら、お願いします。

    • ベストアンサー
    • Java
  • GUIを使用した電卓のボタンの表示について

    Javaの課題で電卓を制作しています。 まず見た目だけ完成させるべくボタンを配置を配置しましたが、 実行してみると正しく表示されるときと、されないときがあります(画像参照)。 現時点でのコードを掲載いたしますので、是非アドバイスをいただけると幸いです。よろしくお願いします。 ■以下コード package add; import java.awt.Button; import java.awt.Frame; import java.awt.TextField; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class Calc extends Frame{ public static void main(String[] args){ Calc frame = new Calc(); } public Calc(){ super("電卓"); setSize(317,360); setVisible(true); addWindowListener(new CalcWindow()); //下記のウィンドウを閉じる用 //ボタンとフィールドの追加 TextField result = new TextField(""); result.setBounds(20,50,270,50); add(result); result.setFocusable(false); Button button1 = new Button("1"); button1.setBounds(20,120,70,30); add(button1); Button button2 = new Button("2"); button2.setBounds(100,120,70,30); add(button2); Button button3 = new Button("3"); button3.setBounds(180,120,70,30); add(button3); Button button4 = new Button("4"); button4.setBounds(20,165,70,30); add(button4); Button button5 = new Button("5"); button5.setBounds(100,165,70,30); add(button5); Button button6 = new Button("6"); button6.setBounds(180,165,70,30); add(button6); Button button7 = new Button("7"); button7.setBounds(20,210,70,30); add(button7); Button button8 = new Button("8"); button8.setBounds(100,210,70,30); add(button8); Button button9 = new Button("9"); button9.setBounds(180,210,70,30); add(button9); Button button0 = new Button("0"); button0.setBounds(100,255,70,30); add(button0); Button buttonC = new Button("C"); buttonC.setBounds(20,255,70,30); add(buttonC); Button buttonasta = new Button("."); buttonasta.setBounds(180,255,70,30); add(buttonasta); Button buttonplus = new Button("+"); buttonplus.setBounds(260,120,30,30); add(buttonplus); Button buttonminus = new Button("-"); buttonminus.setBounds(260,165,30,30); add(buttonminus); Button buttonkakeru = new Button("×"); buttonkakeru.setBounds(260,210,30,30); add(buttonkakeru); Button buttonsla = new Button("/"); buttonsla.setBounds(260,255,30,30); add(buttonsla); Button buttonE = new Button("="); buttonE.setBounds(20,300,270,30); add(buttonE); //ボタンとフィールドの追加ここまで } class CalcWindow extends WindowAdapter //ウィンドウを閉じる { public void windowClosing(WindowEvent e) { System.exit(0); } } } ※OKWAVEより補足:「Webシステム開発」についての質問です。

    • ベストアンサー
    • Java