ベクター図のボタンを作りたい
javax.swing.JButtonでボタンを作って、そこにベクター図を埋め込みたいです。ドーすれば良いですか?サンプルプログラムを書いてくださったり、参考になりそうなホームページを紹介してくださると幸いです。
ボタンに文字(text)を埋め込む方法なら知ってます。ビットマップ図(.pngファイルなど)のアイコンを埋め込む方法も知ってます(ググればサンプルコードが沢山ヒットします)。しかし、ベクトルグラフィックスを埋め込むとなると、ハイレベルでしょうか?
javax.swing.JButton maru=new JButton();//ボタンのインスタンス生成
void paint(java.awt.Graphics g){g.fillOval(100,100,100,100);}//位置のxyも短径長径も100ピクセルの楕円黒丸
maruボタンにsetText("●");とするのは簡単なのですが、やりたい事と少し違います。"●"は文字ですし、これだと半径の設定が厳しいです(フォントサイズを変えれば良いのでしょうが)。
やりたい事は、
maru.setIcon(java.awt.Graphics g.fillOval(100,100,100,100));//半径100ピクセルの円をjava.awtで描いて、それをボタンに埋め込みたい
↑
このコードはエラーになるんです。悲しいです。何とかして、エラーを回避して、maruボタンにfillOval(100,100,100,100)を埋め込みたいです。
ボタンに埋め込む図がベクター図なら、java.awt.Graphics以外の方法でも良いです。だけど、JavaのJButtonを使いますし、javaでベクトルグラフィックスの絵を描くとなるとjava.awt.Graphicsを使うでしょうし、
maru.setIcon(java.awt.Graphics g.fillOval(100,100,100,100));みたいなプログラムが自然かなって思いました。
*****
(以下参考)試しにちょっと作ってみました。
class VectorButtonShitsumon extends java.awt.Frame{
public VectorButtonShitsumon(){setSize(500,500);setVisible(true);}
public void paint(java.awt.Graphics g){g.fillOval(100,100,100,100);}
public static void main(String[] args){
javax.swing.JFrame fr=new javax.swing.JFrame();
fr.setBounds(200,200,200,200);
javax.swing.JButton maru=new javax.swing.JButton();
//maru.setIcon(java.awt.Graphics g.fillOval(100,100,100,100));//←エラーコード
maru.setText("●");//setTextは嫌!
fr.getContentPane().add(maru,java.awt.BorderLayout.CENTER);
new VectorButtonShitsumon();
fr.setVisible(true);
}//end main
}//end class VectorButtonShitsumon
ここまで
コメントを外したときのエラーメッセージ
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
型 AbstractButton のメソッド setIcon(Icon) は引数 (void) に適用できません
型 Graphics の非 static メソッド fillOval(int, int, int, int) を static 参照することはできません
トークン "g" に構文エラーがあります。このトークンを削除してください
お礼
ありがとうございます。 さっそく試してみたところ、うまくいきました。