質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

Q&A

解決済

1回答

2559閲覧

JButtonを継承したクラスで、文字列を表示できません。

otftrough

総合スコア476

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

0グッド

0クリップ

投稿2016/05/06 14:34

今、JButtonのかわりに下のコードのインナークラスを使っていますが、setText()で文字列を表示できなくなりました。
なんとなく、paintComponent(Graphics g)とかその辺が原因なのかなーくらいには思っていますが、調べようにも何を検索していいのかわかりません。
助けてください。

java

1 2 private Image img; 3 public int alpha; //0~255 volatile? 4 public int width; 5 public int height; 6 private boolean size; 7 8 public FButton(){ 9 10 size = false; 11 } 12 13 public FButton(String str){ 14 15 this.setText(str); 16 size = false; 17 } 18 19 public FButton(ImageIcon icon){ 20 21 setIconAndImage(icon); 22 size = false; 23 } 24 25 public void setIconAndImage(ImageIcon icon){ 26 27 setIcon(icon); 28 if(icon != null) img = icon.getImage(); 29 else img = null; 30 } 31 32 public void setIconSize(int w, int h){ 33 34 this.width = w; 35 this.height = h; 36 size = true; 37 } 38 39 public void paintComponent(Graphics g){ 40 41 if(img != null){ 42 43 Graphics2D g2 = (Graphics2D)g; 44 g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, (float)alpha / (float)255)); 45 46 if(!size) g2.drawImage(img, 0, 0, getIcon().getIconWidth(), getIcon().getIconHeight(), this); 47 else g2.drawImage(img, 0, 0, width, height, this); 48 } 49 } 50 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

一応、中央に表示するところまではできたので解決しましたが、もしもっと良い方法があれば教えてください。
解決方法:

java

1 public void paintComponent(Graphics g){ 2 3 Graphics2D g2 = (Graphics2D)g; 4 if(img != null){ 5 6 g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, (float)alpha / (float)255)); 7 8 if(!size) g2.drawImage(img, 0, 0, getIcon().getIconWidth(), getIcon().getIconHeight(), this); 9 else g2.drawImage(img, 0, 0, width, height, this); 10 } 11 if(this.getText() != null){ 12 13 g2.setFont(new Font("HGP創英角ポップ体", Font.BOLD, 20)); 14 FontMetrics fm = g2.getFontMetrics(); 15 int w = 0; 16 for(int i = 0; i < this.getText().length(); i ++){ 17 18 w += fm.charWidth(this.getText().charAt(i)); 19 } 20 g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP); 21 g2.drawString(this.getText(), this.getWidth() / 2 - w / 2, 45); 22 } 23 }

投稿2016/05/06 15:55

otftrough

総合スコア476

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問