- - PR -
Graphicsについて
1
投稿者 | 投稿内容 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-04-02 21:48
はじめまして、marikoです。
最近、JAVAを始めました。 フレームを表示して、グラフを書きたいのですが、 1−VBのような、pixcelsperinchのような関数はありますか? 2−波線を表示できますか? 3−何も指定しない setSize( 500, 450 );はなんのサイズですか? 4−クローズドボタンのイベントの取り方などは何処に記述がありますか? よろしくお願いします。 | ||||||||||||||||||||||||
|
投稿日時: 2003-04-04 14:52
こんにちは、さくらばです。
長文で、すいません。
VB をぜんぜん知らないので、よく分かりませんが、pixelsperinch がスケーリング (座標変換) を行うためのメソッドであるならば、 java.awt.geom.AffineTransform クラスが使えます。 もし、単に ppi を変えるだけであるなら、例えば 96 ppi から 72 ppi に変換するときは x = x / 96.0 * 72.0; とすればいいだけではない でしょうか。
破線ではなくて波線ですか? 波線だとすると、標準で提供されている API ではできません。(破線 はできます) 自分で作るとすると 1. java.awt.Stroke インタフェースを実装したクラスを自作する。 2. java.awt.geom.GenericPath クラスの curveTo メソッドを 繰り返し使用する。curveTo メソッドで 〜 のような線が描画 できるので、それをつなげていくように描く方法です。 1 の方法の方が汎用的ですが、Stroke の動作を理解しなくてはい けないので、面倒くさいです。2 はソースは簡単ですが、座標を 自分で計算しなくてはいけないので、これまた面倒です。 でも、これではあんまりなので.... Sun から提供されている GLF パッケージというのがあります (GLF = Graphic Layers Framework)。この中の WaveStroke という クラスで波線を描くことができます。 # これは Java 2D API Graphics という本のおまけなのですが、 # 日本語訳はでそうもありません。 GLF http://developer.java.sun.com/developer/Books/2dgraphics/ サンプルを一番下に書いておきます。コンストラクタの第 1 引数 が線の太さ、第 2 が波の長さ、第 3 が波の高さになります。 GLF をダウンロードして解凍すると、glfbuild.bat というバッチ があるので、これを実行すると classes というディレクトリがで きてそこにコンパイルでできたクラスファイルがおかれています。 例えば、WaveLineSample.java を classes があるディレクトリに おいたとしたら、次のようにコンパイルして、実行します。
どのクラスで setSize をするのでしょうか。Frame クラスか JFrame クラスの派生クラスであればウィンドウの大きさになりま す。 JLabel などのコンポーネントの派生クラスであれば、コンポーネ ントの大きさになります。しかし、レイアウトマネージャによっ てサイズは自動的に変化するので、setSize は使えないことの方 が多いです。Swing であれば setSize の代わりに setPreferredSize を使用します。
WindowListener でイベントを取ることができます。 もし、JFrame を使用していて、単に終了するとかウィンドウを 消去するだけであれば setDefaultCloseOperation メソッドで 動作を指定できます。 下のサンプルは setDefaultCloseOperation で行っていますが、 コメントのようにも記述することができます。 -----------------WaveLineSample.java----------------------
| ||||||||||||||||||||||||
|
投稿日時: 2003-04-07 16:03
あしたばさん、
どうもありがとうございます。 細かく教えていただいて助かります。 やっと、なんとかコンパイルエラーのでないように やりましたが、 C:\JAVA>java -classpath classes WaveLineSample Exception in thread "main" java.lang.NoClassDefFoundError: WaveLineSample のエラーがでます。 それと、-classpath classes は普通のpath指定では 駄目なのですか? | ||||||||||||||||||||||||
|
投稿日時: 2003-04-08 01:34
さくらばです。
「あしたば」ではないんですけど....
すいません。前の投稿で java の起動の時のオプション指定が間違ってました。正しくは java -classpath classes;. WaveLineSample というようにカレントディレクトリを CLASSPATH に加える必要があります。 | ||||||||||||||||||||||||
|
投稿日時: 2003-04-08 18:25
「あしたば」ではないんですけど....
そうでした。m(..)m java -classpath classes;. WaveLineSample というようにカレントディレクトリを CLASSPATH に加える必要があります。 で。できました。どうもありがとうございます。 |
1