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

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

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

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

Q&A

0回答

1197閲覧

色を変えるのでなく図形を変えたい

8Hachikou8

総合スコア3

Java

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

0グッド

0クリップ

投稿2021/10/07 08:42

前提・実現したいこと

マウスが入ったとき、マウスを押されている時に色を変えるというコードを
色ではなく形を変えるに変更したいのですが、うまくいきません
どなたか教えていただきたいです。

発生している問題・エラーメッセージ

Graphicsを使ってやろうとしているが
えらーがでて実行できない。

該当のソースコード

package ex5;

import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;

import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ImageButton02C extends JFrame {
public static void main(String[] args) {
ImageButton02C w = new ImageButton02C( "ImageButton02C" );
w.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
w.setSize( 300, 300 );
w.setVisible( true );
}
public ImageButton02C( String title ){
super( title );

JPanel pane = (JPanel)getContentPane(); JButton item = new JButton(); item.setIcon( new TestIcon() ); //押されたとき item.setPressedIcon( new TestIcon( Color.blue ) ); //入ったとき item.setRolloverIcon( new TestIcon( Color.red) ); item.setRolloverEnabled(true); item.setToolTipText( "Test" ); pane.add( item );

}

class TestIcon implements Icon {
static final int width = 100;
static final int height = 100;
Color color;
Graphics g;

public TestIcon() { color = Color.green; g = Graphics.fillOval; } public TestIcon( Color c ) { color = c; } public void paintIcon( Component c, Graphics g, int x, int y ) { g.setColor( this.color ); g.fillRect( x, y, width, height ); } public int getIconWidth() { return this.width; } public int getIconHeight() { return this.height; }

}
}

試したこと

public TestIcon( Color c ) {
color = c;
}
の部分を
public TestIcon(Graphics g, int x, int y ) {
g.fillRect( x, y, width, height );
}
にしてみた

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

jimbe

2021/10/07 08:52 編集

コードや画面表示に関しましては、マークダウンという記法を利用して記述してください。マークダウンにつきましては、ヘルプをご参照ください。 > えらーがでて実行できない どのようなコードにした時にどのようなエラーが出ているのか、ご質問を編集してマークダウンでのご提示をお願いします。
dodox86

2021/10/07 10:05

クラス名がImageButton02なので、どちらかの学校の課題っぽいですね、、、
YT0014

2021/10/07 10:55

エラーが出たのならエラーメッセージをご提示ください。
8Hachikou8

2021/10/07 11:07

Yahoo知恵袋を見ながらもう少しやってみます。大学の課題なのですが、授業資料をみてやってもわからなく質問させて頂いてます。
8Hachikou8

2021/10/07 11:18

// 塗りつぶし三角を描く int[] arr_x = {x + width/2, x + width, x}; int[] arr_y = {y + 0,y + height, y + height}; ここは配列を使っているということでしょうか?
TN8001

2021/10/07 13:40

> ここは配列を使っているということでしょうか? そうですね。 int[] arr_x = new int[]{x + width/2, x + width, x}; こう習っていたとしたら「new int[]」は省略できるということです。 [java 配列 初期化 - Google 検索](https://www.google.co.jp/search?q=java+%E9%85%8D%E5%88%97+%E5%88%9D%E6%9C%9F%E5%8C%96 メソッドのほうを調べても配列を要求していることがわかります。 [Graphics - fillPolygon (Java Platform SE 8 )](https://sun.ac.jp/prof/yamagu/java8docs/api/java/awt/Graphics.html#fillPolygon-int:A-int:A-int- [【Java】描画の基本、図形表示 | のんぽぐ](https://nompor.com/2017/11/30/post-1503/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問