• 締切済み

java.awt.peer?

javaのAPIでToolkitについて調べているとjava.awt.peerというパッケージについての記述がありました。ですが調べてみてもAPIにはそんなパッケージはなく、ついでにとjavaのライブラリのソースファイルを見てみるとこのパッケージがありました。このパッケージは何のためのパッケージなのでしょうか?

  • Java
  • 回答数1
  • ありがとう数4

みんなの回答

noname#49664
noname#49664
回答No.1

これは「ピア(Peer)」と呼ばれるものに関するパッケージです。これは今でも実装されていますが、公式ドキュメントからは姿を消しています。これはあくまでJavaが内部的に使われるものであり、開発者に公開される必要がないパッケージですので。(かつ、おそらく近い将来に消滅するだろうパッケージですので公開し直接利用されると困るのでしょう) AWTは、pure Javaではなく、内部的にプラットフォームのネイティブなグラフィックコンテキストによって描画されていることはご存知でしょうか。このネイティブコードとの橋渡しをしている部分がピアです。コンポーネントがnewされると、そのコンポーネントに応じたピアが作成され、そこからネイティブコードが実行されプラットフォームのグラフィックコンテキストのAPIをコールして描画がされます。

annamairu
質問者

お礼

ありがとうございます。実装されているのに公開されていないパッケージなんていうのがあるんですね。これでまた少しjavaを深く理解できました。 >AWTは、pure Javaではなく、内部的にプラットフォームのネイティブなグラフィックコンテキストによって描画されていることはご存知でしょうか。このネイティブコードとの橋渡しをしている部分がピアです。 ではこの「Peer」がAWTとSwingの違いの最たるものという感じですね。

関連するQ&A

  • Java AWTのコンポーネントについて

    JavaのAWTで軽量コンポーネントと重量コンポーネント、軽量コンテナ・重量コンテナとありますが、 それぞれどのようなものでしょうか? ネイティブのピアを持つもの持たないものなどの違いがあると思いますが、 具体的にどのクラスはピアを持っていて、どのクラスはピアを持っていないのかを 簡単にわかる方法はないでしょうか? 書籍やネットでは「ComponentやContainerを直接拡張したクラス」は軽量とあるのですが、 「直接拡張したクラス」は継承とは別のようなので、理解に困っております。 PanelやCanvasは重量コンポーネントという記述はみつけたのですが、 Panelなどがなんで重量なのかがわからないです。 理解できていないので、わかりづらい質問になってしまい恐縮ですが、 詳しい方いましたら教えて頂けないでしょうか。

  • java.awtとHTML

    もしHTMLをスラスラ書く技術があれば、ワードや一太郎などのワープロソフトは不要ですか?最近は簡単なちHTMLエディタも沢山ありますし。 Javaにawtっていうパッケージがあるじゃないですか。これはHTMLと用途や機能がよく似ています。ボタンだったり、テーブルだったり、リンクだったり、写真のペーストだったり。コーディングは厄介ですが、java.awtの技術があれば、HTMLは不要ですか? グーグル検索でヒットするホームページの大半は、http://で始まっています。標準化とかいう方針なんだそうです。って事は、一太郎で文章書いて、ホームページに載せるとなると、HTMLに直すって事でしょうか?ちょっと面倒な気がするのですが、気のせいでしょうか? awtのメリットって何ですか?HTMLよりコーディングは複雑だし、awttp://みたいなホームページは超珍しいと思うし。HTMLがあれば大抵の事が出来て、標準化でHTMLが占めているのなら、awtは必要なのでしょうか?高画質の写真の表示など、重い処理だとawtは速いのかな?

    • ベストアンサー
    • Java
  • JavaのAPIについて

    Java Speech APIというのを使ってみたいのですが、どのバージョンのJ2SEをダウンロードしてみても入っていません。APIは自分で追加できるのでしょうか。また、どのようにするのでしょうか。 ●リファレンス http://java.sun.com/reference/api/index.html ●Java Speech API http://java.sun.com/products/java-media/speech/ ●パッケージ http://java.sun.com/products/java-media/speech/forDevelopers/jsapi-doc/index.html

    • ベストアンサー
    • Java
  • Javaで簡単なピアノ演奏プログラム

    Javaで簡単なピアノを演奏するプログラムを作成しています。 初心者なので、色々経験を積んでいく最中です。 他にも、ブロック崩しも並行で作成中なんですが、Javaでピアノ演奏のアプリケーションも おもしろそうだと思ったので、この期に作ろうと思いました。 それで、フレームの表示(フレームを経由してキーボードの情報を受けてます)と、キーリスナーの 実装、サウンド用のAudioClipの変数も用意しました(多数入れるので、配列の形で用意してます) その後、AudioClipの変数の中に、wavファイルを指定して、ここで一旦実行結果を確認しようと思いコンパイラしたのですが、フレームの表示はOK、キーの入力もOKだったんですが、なぜか音が出なかく、代わりにエラーが出ました。 そのエラーの内容が下記です。 ================================== Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Sound.keyPressed(Sound.java:26) at java.awt.Component.processKeyEvent(Component.java:6247) at java.awt.Component.processEvent(Component.java:6066) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Window.processEvent(Window.java:1836) at java.awt.Component.dispatchEventImpl(Component.java:4652) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.ja va:1850) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboard FocusManager.java:712) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeybo ardFocusManager.java:990) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeybo ardFocusManager.java:855) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFoc usManager.java:676) at java.awt.Component.dispatchEventImpl(Component.java:4524) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:603) at java.awt.EventQueue$1.run(EventQueue.java:601) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessCo ntrolContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessCo ntrolContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:617) at java.awt.EventQueue$2.run(EventQueue.java:615) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessCo ntrolContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre ad.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread. java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre ad.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) ================================== 以上が、出力されたエラーの内容です。 Javaのファイル名は、Mainframe(メインファイル)、Soundファイルです。 今度文化祭の方で出展しようかと思っているんですが、時間が無いためちょっと焦ってます。 恐らく、いくつか必要な情報が抜けてるかと思いますが、指摘を頂ければその都度記載させて頂きます。乱文で申し訳ございませんが、ご教授の方宜しくお願い致します。

    • ベストアンサー
    • Java
  • javaプログラムのエラーについてです

    プログラムは無事コンパイルすることができました。 しかし、アプレットを実行すると以下のようなエラーが発生します。 なぜこのようなエラーが起こるのでしょうか?勉強不足ですいません。 Exception in thread "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBoundsException: 2 at sample1.paint(sample1.java:19) at java.awt.Container.update(Container.java:1988) at sun.awt.RepaintArea.updateComponent(RepaintArea.java:255) at sun.awt.RepaintArea.paint(RepaintArea.java:232) at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:347) at java.awt.Component.dispatchEventImpl(Component.java:4948) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4698) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:694) at java.awt.EventQueue$3.run(EventQueue.java:692) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo main.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo main.java:87) at java.awt.EventQueue$4.run(EventQueue.java:708) at java.awt.EventQueue$4.run(EventQueue.java:706) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo main.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:705) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre ad.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread. java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre ad.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

  • javaのGUIツールキット

    javaのGUIツールキット * AWT(Abstract Window Toolkit) * Swing 上記の2種を用いる課題が出ているのですが、java.awtとjavax.swingの2つが必要とのことなので、ubuntu Linux上のSynapticパッケージマネージャにて検索をかけ、libcharva1-javaというパッケージをインストールしました。 その後 import java.awt.*; class TestFrame { public static void main(String argv[]) { Frame f = new Frame("Test"); f.setSize(300,200); f.setVisible(true); } } などのプログラムをコンパイルしてみたところ、 Exception in thread "main" java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it. at java.awt.GraphicsEnvironment.checkHeadless(Unknown Source) at java.awt.Window.<init>(Unknown Source) at java.awt.Frame.<init>(Unknown Source) at javax.swing.JFrame.<init>(Unknown Source) at TestFrame.main(rensyuu1.java:6) とエラーが示されてしまいます。 これはどのように解決すればよいのでしょうか。 環境は以下のとおりです。 使用OS:WindowsVista vmwareにてubuntu-Linux8.1をエミュレート JDK6もインストール済みなのですがどうにもうまくいきません。 どうか解答よろしくお願い致します。

  • Javaで電卓を作りたい

    Javaで電卓を作りたいと思っています。 Javaエンジニアの方で 電卓アプリケーションならこのソースがスゴイ!というような 為になるというサイトがあれば教えて頂きたいです。 それとJavaの表記はJavaで正しいのですか?JAVAではないのですか? この2点、よろしくお願いします。 Javaのソースライブラリで有名なサイトはどこですか? 他の人のソースを見て勉強したいのでお勧めサイトを教えてください。

  • AWTでテキストボックスの枠線を消すには

    java.awtで入出力項目(テキストボックス)の枠線を消す方法はあるでしょうか? apiで調べましたが見つからず、swingでするしかないのでしょうか? 背景色を変えるまでは成功したのですが…

    • ベストアンサー
    • Java
  • C言語からjavaを呼び出したい

    C言語からjavaを呼び出したいのでjniを使うことにしました。 各言語のソースはWebで見つけたサンプルを見ながら何とか作成し、各々コンパイルまで終わったのですが、javaのオブジェクト(?)をどこに置いたら良いのかさっぱりわかりません。 java使いの人達には常識の話だと思いますがjavaはサーブレットしか作ったことが無くどうしたものかと困っています。 分からないのは次の2点です。 1.classファイルのままでも良いのかjarにしないといけないのか? 2.どこに設置したら良いのか? これまでやったこと 1.javaのソースを作成しコンパイルしました(classファイルのままです) 2./etc/profileに次のコマンドを追加しました。 LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/java/jdk1.7.0_03/jre/lib/amd64/server export LD_LIBRARY_PATH 3.C言語のソースを次のコマンドでコンパイルしました。 % gcc -I/usr/java/jdk1.7.0_03/include/ -I/usr/java/jdk1.7.0_03/include/linux -L/usr/java/jdk1.7.0_03/jre/lib/amd64/server -ljvm -lpthread jnitest.c -o jnitest 4.javaモジュールの設置←これがわかりません 初歩的な質問で申し訳ありませんがご教示下さい。

    • ベストアンサー
    • Java
  • javaについて

    javaでプログラムを書くときにMediaTracker mt = new MediaTracker(this);とToolkit tk = Toolkit.getDefaultToolkit();の記述は書かなければならない決まりのようなものなのでしょうか?

    • ベストアンサー
    • Java