初心者をはやく抜けたいところなんですが、
swing等の単なるコンポーネントとBeanの違いが、いまひとつ分かりません。

さらに実は、コンポーネントとAPIの意味するものの違いもよく分かってません。

漠然とは分かりますが、厳密な意味合いの違いが曖昧です。
どなたか教えてください。お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QSwingは軽量コンポーネントについて

 今日は、JAVA Swing勉強中の初心者です。
 本を読むとAWTは重量コンポーネント、Swingは軽量コンポーネント(一部重量コンポーネントもある)と
書かれていますが、これは一体何を意味するものでしょうか。
 読んでても良く分からないのですが、重量コンポーネントはOSに近い所で動作する、軽量コンポーネントはその逆、、、
 この内容について、プログラムを組む人間は何に気をつけなければならないのでしょうか。
 どうも重量コンポーネントだから動作が重たいとか、遅いとか、メモリの消費が多いとかという解説も
見当たらないし、また、どちらが動作的に速いのか、遅いのか、OSへの負担が大きいのかも書いていません。
(読んでる本が悪すぎるのかも知れないですが。。。。)
 だから、AWTを使うときはどのように気をつけなければとか、Swingを書くときにどうしなければならないとかの記述
も、色々と調べてもどの本にも書いていませんが、だから一体何がどうなのでしょうか。
 
 そもそも、重量コンポーネント、軽量コンポーネントとは何を表すもので、だから何がどうなるのでしょうか。
 動作的なものについての記述なのでしょうか。

 宜しくお願いします。

 今日は、JAVA Swing勉強中の初心者です。
 本を読むとAWTは重量コンポーネント、Swingは軽量コンポーネント(一部重量コンポーネントもある)と
書かれていますが、これは一体何を意味するものでしょうか。
 読んでても良く分からないのですが、重量コンポーネントはOSに近い所で動作する、軽量コンポーネントはその逆、、、
 この内容について、プログラムを組む人間は何に気をつけなければならないのでしょうか。
 どうも重量コンポーネントだから動作が重たいとか、遅いとか、メモリの消費が多いと...続きを読む

Aベストアンサー

重量・軽量というのは「コスト」の話だろうと思う。コストというのは、メモリの消費とかCPUの使用量とかいろいろあるが、この場合は「ネイティブ環境のリソース」(ヒープメモリ)と考えるのがいい。

AWTは、実際の描画部分をOSのAPIに依存しているため、作成すると自動的にOSのリソースを消費する。つまり、AWTのGUIを使うほどに、OSのヒープを圧迫することになる。Swingの場合、土台となるウインドウ部分だけはOSのリソースを消費するが、その中のコンポーネントはすべてJava仮想マシン内のメモリしか使っていないわけで、OSへの影響はだいぶ小さい。

また、OSが管理する部分は、Java仮想マシンでは制御できない部分となる。つまりそれだけAWTは「Javaで制御できない部分」が大きいということになる。

だからどうしろ?ということより、「そういう性質のものであることを知って使う」という意味での、基礎知識と考えたほうがいいと思う。AWTは、Swingより高速だがOSへの依存度が高く、このため表示のカスタマイズもできない。それを知らず、AWTのコンポーネントクラスを継承して自分でコンポーネントを作ろうとして、「どうやっても表示がカスタマイズできない」と悩むのは時間の無駄だろう。どうあがいても「ネイティブコードで実行される描画」はJavaからタッチできないんだから。

「両者がどう違うか」を知っていればそんな無駄なことで悩まずにすむが、知らなければ一人でもがくことになってしまう。だから「知識として知っておくべき」と考えればいいと思う。

重量・軽量というのは「コスト」の話だろうと思う。コストというのは、メモリの消費とかCPUの使用量とかいろいろあるが、この場合は「ネイティブ環境のリソース」(ヒープメモリ)と考えるのがいい。

AWTは、実際の描画部分をOSのAPIに依存しているため、作成すると自動的にOSのリソースを消費する。つまり、AWTのGUIを使うほどに、OSのヒープを圧迫することになる。Swingの場合、土台となるウインドウ部分だけはOSのリソースを消費するが、その中のコンポーネントはすべてJava仮想マシン内のメモリしか使って...続きを読む

Qjavaのswingで、JLabelを継承したコンポーネントのインスタ

javaのswingで、JLabelを継承したコンポーネントのインスタンスから
そのコンポーネントが置かれているJAppletインスタンスを取得する方法はありますか?

Aベストアンサー

JLabel#getParent()で親コンポーネントを取得できますが、
それを再帰的に呼ぶことで、JAppletインスタンスを取得することができます。

QSwing自作コンポーネントをadd出来るように、

JTextFieldやJButtonなどを一つにまとめたコンポーネントを自作し、それをadd()出来るようにしたいです。frame.add(自作のクラスのインスタンス)を可能にしたいです。

調べて、paintComponent()を使えば良いということはわかったのですが、Graphicsのインスタンス(?)に線を描いたり、円を描いたりする方法はわかりましたが、JButtonやJTextFieldなどをGraphicsのインスタンス(?)に追加する方法はわからず、paintComponent()を使うやり方はできませんでした。

paintComponent()も使わずに、自分のできる方法で、組んだものを一応載せます。

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MyComponentTest{
public static void main(String[] args){
JFrame frame = new JFrame("タイトル");
frame.setSize(400, 300);
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));

// 2つのテキストフィールドと一つのボタンを4つ追加する
frame.add(new TwoTextFieldsAndOneButton().getContent());
frame.add(new TwoTextFieldsAndOneButton().getContent());
frame.add(new TwoTextFieldsAndOneButton().getContent());
frame.add(new TwoTextFieldsAndOneButton().getContent());

frame.setVisible(true);
}
}

//2つのテキストフィールドと一つのボタンを一つの部品にしたい
class TwoTextFieldsAndOneButton{
JTextField textField1 = new JTextField("テキストフィールド1");
JTextField textField2 = new JTextField("テキストフィールド2");
JButton button = new JButton("ボタン");

// こんなメソッドを使わずに、再現したい
JPanel getContent(){
JPanel panel = new JPanel();

panel.add(textField1);
panel.add(textField2);
panel.add(button);
return panel;
}
}

JTextFieldやJButtonなどを一つにまとめたコンポーネントを自作し、それをadd()出来るようにしたいです。frame.add(自作のクラスのインスタンス)を可能にしたいです。

調べて、paintComponent()を使えば良いということはわかったのですが、Graphicsのインスタンス(?)に線を描いたり、円を描いたりする方法はわかりましたが、JButtonやJTextFieldなどをGraphicsのインスタンス(?)に追加する方法はわからず、paintComponent()を使うやり方はできませんでした。

paintComponent()も使わずに、自分のできる方法で、...続きを読む

Aベストアンサー

全角空白でインデントしております。コピペ後タブ等に置換してください。


class TwoTextFieldsAndOneButton extends JPanel {
 JTextField textField1 = new JTextField("テキストフィールド1");
 JTextField textField2 = new JTextField("テキストフィールド2");
 JButton button = new JButton("ボタン");

 TwoTextFieldsAndOneButton(){
  super();

  add(textField1);
  add(textField2);
  add(button);
 }

 // 以下、各コンポーネントのプロパティへのアクセスや操作を行うコードを記述する
}

QEJBセッションBeanとEJBエンティティBeanについて

はじめまして。
質問があります。
参考書によくEJBセッションBeanやEJBエンティティBeanという
用語が出てくるのですが、これらは一体何者なのでしょうか?
自分で作るJavaBeansなのでしょうか?それとも
すでに開発現場などで使いそうな機能を実装したコンポーネント
で、開発者はただそれを使用するだけのものなのでしょうかつまり
出来あいのコンポーネントなのでしょうか?
どうかご教授お願いします。

Aベストアンサー

自分で作ります。というか技術の名前なので状況によります。

・JavaBeansは「ある形式」に則ったクラスの事である。
・JavaBeansを自作する。
・JavaBeansを自作してネットで公開する。
・人が公開しているJavaBeansを使用する。
以上の4つが意味が分かるのであれば、それをそのまま次のように分かるだろう。
・EnterpriseJavaBeansは「ある形式」に則ったクラスの事である。
・EnterpriseJavaBeansを自作する。
・EnterpriseJavaBeansを自作してネットで公開する。
・人が公開しているEnterpriseJavaBeansを使用する。

JavaBeansが特別な形のJavaクラスだとすると、EJBは特別な形のJavaBeansという事になるでしょうか。

で、EJBは大きく次の2つに分けられる。
SessionBean:普通プログラムを書く
EntityBean:普通データ構造のみを書く

非常に簡単な説明だが、基本は上のような感じです。

Q【初心者質問】beanを使うときにパッケージ化しないといけないのか?

Linux(CentOS)をtelnetで操作して
Tomcat+Apache+JDKでWebアプリケーションを作成しています。
初心者です。
特に困っていない(動作できた)のですが
なぜなのか理解できないので、後学のためにご教示くださいませ。



jspでフォームに入力した情報を
サーブレットで取得し、その情報をDB(Postgresql)にINSERT
登録結果画面としてjspで登録した情報を表示

ということをしたかったのですが、
その際、フォーム入力情報をbeanに入れて
beanオブジェクトをrequest.setAttributeしたんですが
jspから取得(getProperty)できませんでした。

最終的に
package beans;としてインポートすることで解決できたんですが
なぜできたのか良く分かりません。

packageは煩雑にならないようクラスファイルのディレクトリ構成を
指定するものだ
という認識だったのですが、
今回のようなケースでは必須事項なのでしょうか?
そうならば、なぜなのでしょうか?

# Servlet.classとBean.classはもともとclassesディレクトリにいたのを
  classes/beansディレクトリにしたことでうまくいくというのが解せません
  classesディレクトリにあるならいいじゃないかと思うわけです。。

Linux(CentOS)をtelnetで操作して
Tomcat+Apache+JDKでWebアプリケーションを作成しています。
初心者です。
特に困っていない(動作できた)のですが
なぜなのか理解できないので、後学のためにご教示くださいませ。



jspでフォームに入力した情報を
サーブレットで取得し、その情報をDB(Postgresql)にINSERT
登録結果画面としてjspで登録した情報を表示

ということをしたかったのですが、
その際、フォーム入力情報をbeanに入れて
beanオブジェクトをrequest.setAttributeしたんですが
jsp...続きを読む

Aベストアンサー

Java 1.4以降だったと思うが、デフォルトパッケージは、他のパッケージないから呼び出せない、という仕様になっている。デフォルトパッケージは、小規模な開発あるいは一時的な利用にとどめ、正式な開発では必ずパッケージ下に配置する方向にしたいんだろうな。

JSPは、内部的にサーブレットにコンパイルされ実行される(当然、何らかのパッケージに配置される)ので、JSPからはデフォルトパッケージ内のクラスは呼び出せないことになる。従って、必ず、何らかのパッケージ下にBeanは置かなければいけないことになる。


このカテゴリの人気Q&Aランキング

おすすめ情報