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

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

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

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

Q&A

解決済

3回答

1237閲覧

図形描画の最初の段階 paint()を使わずにできますか

ppmo

総合スコア88

Java

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

0グッド

0クリップ

投稿2017/03/24 19:04

java

1import javax.swing.*; 2import java.awt.*; 3 4public class test4{ 5 public static void main(String[] args){ 6 test4 t=new test4(); 7 t.kaku(); 8 } 9 void kaku(){ 10 JFrame j=new JFrame(); 11 j.setSize(600,400); 12 j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 13 j.setVisible(true); 14 Graphics g=j.getGraphics(); 15 g.setColor(Color.blue); 16 g.fillOval(50,50,100,100); 17 } 18}

コンストラクタもpaint()も使わずにできるか試しています
これで窓は出るのですが図形は表示されません
どうしてでしょうか

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

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

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

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

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

guest

回答3

0

自己解決

理解するには手強過ぎました
諦めました

投稿2017/03/25 09:19

ppmo

総合スコア88

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

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

KSwordOfHaste

2017/03/25 09:29

ちょっと範囲が広すぎて解説みただけでは難しかったかも知れませんね。本件に限定するなら原因を端的にいえば次のようになります。 JFrameのインスタンスを生成した段階では実際のpeer(WindowsでいえばWin32 window handle)はまだ生成されてないので、描画しようとしても「peerがないので描画オペレーションが無視される」からです。peerがしかるべき手順で用意されて実際にそこへ描画できるタイミングがどこなのかというとそれが「paint/paintComponentが呼び出されたとき」になります。 ただ、これだけ説明されても「なんでそうなっているの?」と疑問を感じるであろうと思いますが…
guest

0

普通はpaintを使って描画するものだということをご存知で、あえて試してみているということだと思います。

javaを開発したsunの人々も、プログラマーがそのような疑問を持つことを予想していたようで、答えを用意していました。(このページはJava APIリファレンスのjava.awt.Component#repaintメソッドからリンクされています。)

Painting in AWT and Swing

しかしあるブロガーの方が邦訳されているのを見つけました。こちらの方が見やすいでしょう。

翻訳 AwtとSwingにおける描画処理

投稿2017/03/24 23:41

KSwordOfHaste

総合スコア18392

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

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

ppmo

2017/03/24 23:47

そこに解決策がありそうですね かなり私にとってはハードな文面ですが読解してみたいと思います
guest

0

Swing の場合は paintComponent を使うようです。
下記サイトの解説がわかりやすいと思うので参考にしてみてください。

https://www.javadrive.jp/java2d/graphics2d/index1.html

投稿2017/03/24 23:26

ykws

総合スコア1236

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

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

ppmo

2017/03/24 23:47

まだAwtとSwingの区別がつかない段階です JPanelも後に試してみたいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問