revision 1.14 新設項目 -------------------------------------------------------------------------- [目次部分] Q1.2 ここにないものは何ですか?。 --旧Q1.2以降が1.3以降へとずれました。 Q5.13 ウィンドウのレイアウト表示がおかしいです。ウィンドウを動かさないと、 レイアウトが正しくなりません。何が、いけないのですか?。 Q8.2 アプレットでSwingを使えますか?。 Q8.3 Swingでテキストのアンチエイリアシングをonにするには?。 --旧8.2, 8.3は、8.4, 8.5へとずれました。 -------------------------------------------------------------------------- [本文部分] Q1.2 ここにないものは何ですか?。 これはプログラミング入門のためのページではありません。読者がJavaやGUIの 用語を知っている、と想定しています。 Q5.13 ウィンドウのレイアウト表示がおかしいです。ウィンドウを動かさないと、 レイアウトが正しくなりません。何が、いけないのですか?。 ウィンドウが表示されたあとで、内容やレイアウトを変えたのでしょう。レイ アウトの変更は、自動的には行われません。いちばん良いのは、表示する前にウ ィンドウの構築を終えることです。それが無理なときは、内容やレイアウトを変 えたあとで、ウィンドウに命令します: 1) AWTでは: ウィンドウのinvalidate()を呼んで、次にvalidate()を呼びます。 2) Swingでは: ウィンドウがJComponent(たとえばJPanel)なら、revalidate()を呼びます。 ウィンドウをinvalidate()してからpack()するやりかたもあります。 validate()/revalidate()のあとにrepaint()を呼ぶ必要がある場合には、 paintComponent()の冒頭でsuper.paintComponent()を呼ぶのを忘れていないか、 paint()の実装が不完全でないか、チェックしましょう。 以下の項目も見てください: Q7.1 AWTのCanvasのようなものは, Swingでは何ですか? Q7.2 JPanelの上で描画をすると、背景がごみになります。 Q3.4 Canvas/JPanel/JComponentなどの上でグラフィクスがうまく描けません。 あるいは, 描画をしようとするとNullPointerExceptionになります。どうしたら いいですか? Q8.2 アプレットでSwingを使えますか?。 ユーザのブラウザのJavaプラグインがSwingをサポートしていればOKです。あ なたは古いバージョンのJavaの上で開発をしないでしょうから、ユーザのプラ グインも最新であるのが理想です。ダウンロードはここから: プログラマなら: http://java.sun.com/products/plugin/index.jsp 消費者ユーザなら: http://www.java.com/ Swingのアプリケーションをアプレットではなくアプリケーションとして提供 し、Java WebStartで動かしてもらう方法もありますね。JavaWebStartは今では JREに含まれています。詳しくは: http://java.sun.com/products/javawebstart/ Q8.3 Swingでテキストのアンチエイリアシングをonにするには?。 Swingのアンチエイリアシングの効果は、フォントの種類やサイズ、フォント レンダラ、モニタの解像度、などによってまちまちです。したがって、この機 能はアプリケーションのオプション機能にすることと、ユーザの環境でテスト することが重要です。 1) Java 1.5より前は: テキストのアンチエイリアシングを個々のコンポーネントに対して指定する のは簡単でしたが、GUIのすべてのコンポーネントに対してonにするのは悪夢 でした。 ひとつのコンポーネントに対してonにするには、サブクラスを作って paintComponent()を次のように実装します: public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint( RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON ); g2.setRenderingHint( RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY ); super.paintComponent(g2); } } すべてのコンポーネントでonにするには、アプリケーションで使用するすべ てのコンポーネントを、上のようなサブクラスとして作ります。または、次の ようなサイトで、アンチエイリアシングのできるPLAF(pluggable look and feel) を探します: http://smoothmetal.sourceforge.net/ http://wraplf.l2fprod.com/ 2) Java 1.5以降: コマンドラインでシステムプロパティswing.aatextをtrueにセットすると、 アンチエイリアシングがグローバルにonになります。 以前の方法も、使えます。 -------------------------------------------------------------------------- [URLの変更] < http://java.sun.com/j2se/1.4.2/docs/guide/awt/index.html > http://java.sun.com/j2se/1.5.0/docs/guide/awt/index.html < http://java.sun.com/j2se/1.4.2/docs/guide/swing/index.html > http://java.sun.com/j2se/1.5.0/docs/guide/swing/index.html < http://java.sun.com/j2se/1.4.2/docs/guide/2d/index.html > http://java.sun.com/j2se/1.5.0/docs/guide/2d/index.html < http://java.sun.com/j2se/1.4.2/docs/guide/imageio/index.html > http://java.sun.com/j2se/1.5.0/docs/guide/imageio/index.html < http://java.sun.com/j2se/1.4.2/docs/guide/jps/index.html > http://java.sun.com/j2se/1.5.0/docs/guide/jps/index.html < http://java.sun.com/j2se/1.4.2/docs/guide/imf/index.html > http://java.sun.com/j2se/1.5.0/docs/guide/imf/index.html < http://java.sun.com/j2se/1.4.2/docs/guide/access/index.html > http://java.sun.com/j2se/1.5.0/docs/guide/access/index.html < http://java.sun.com/j2se/1.4.2/docs/guide/dragndrop/index.html > http://java.sun.com/j2se/1.5.0/docs/guide/dragndrop/index.html < http://java.sun.com/j2se/1.4.2/docs/guide/2d/spec/j2d-bookTOC.html > http://java.sun.com/j2se/1.5.0/docs/guide/2d/spec/j2d-bookTOC.html --end of text--