• ベストアンサー

オリジナルのコンポーネントの定義

自分でコンポーネントを作成する方法を教えてください。 例えば、添付した画像のように、JFrame に自分で作成した myPlayer コンポーネントを貼っています。 このとき、myPlayer をどのように定義すればよいのでしょうか。 JFrame を継承して myPlayer クラスを作成しても、コンポーネントとして貼ることはできません。 簡単なコードを例に示していただけると助かります。

  • Java
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

それぐらいの要求仕様なら、新たなコンポーネントを自作する必要はありません。JPanelの上にボタンとスライダーをレイアウトするだけでいいでしょう。

mitsuruj
質問者

お礼

参考になりました。 ご返答ありがとうございました。

その他の回答 (1)

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

MyPlayer (not myPlayer)の要求仕様がよく分かりません。 ほとんどのGUIコンポーネントは、JComponentの拡張クラスを自作し、そのpaintComponent()メソッドをオーバライドすればできあがるはずです。

mitsuruj
質問者

お礼

ご返答ありがとうございます。 大変参考になります。 例の MyPlayer は「前の曲に戻る」、「次の曲に進む」、「曲を再生する/止める」のボタンがあり、曲の再生位置がスライダーによって表示されています。再生する曲のファイルパスは MyPlayer のコンストラクタの引数によって与えられるとします(曲の読み込み&再生制御部分は本質でないため詳細は省略致します)。この MyPlayer を JButton のようにコンポーネントとして JFrame 上に貼付けたいと考えています。

関連するQ&A

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

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

  • 【C#】内部だけで有効なインターフェースを作りたい

    C#2005でコンポーネントを作ろうと思っています。 そこであらゆるコンポーネントに共通な内部インターフェースが存在し、 更にはコンポーネントはいくつかの種類のコンポーネントを継承したいです。 不可能なコードで記すと、このようなことがしたいです。 【拡張TextBox】 public class ExTextBox : AbstractTextBox { } 【抽象TextBox】 public abstract class AbstractTextBox : TextBox, ICommonControl {  public AbstractTextBox() {   _ifMethod();  }  private void _ifMethod() {  ←これ   // 処理  } } 【内部インターフェース】 public interface ICommonControl {  void _ifMethod(); } インターフェースはpublic宣言以外定義が行えず、内部で利用される インターフェースとしては使えません。 別にインターフェースをそのまま実装すれば出来なくはないですが、 外部にインターフェースを実装したメソッドが見えるのはマズいです。 もしくは多重継承的なことが出来れば解決すると思うのですが・・・。 コンポーネントを継承する関係で、直前のクラスはTextBoxやLabelなどと いったクラスを継承するしかない為、それ以外の内部部分を共通化 したい場合に、どうすればいいのか分かりません。 実現させる方法が思いつかない為、何かシンプルな一例をご提示 頂けないでしょうか?

  • テーブルの1レコードを継承してクラスを定義する方法

    あるサイト(URLは忘れました。)で、 「  テーブルの1レコードを定義したクラスを、継承  して、新しいクラスの中でテーブルを作成する。                        」 と記載されていたのですが、コーディング上どのよう にするかを迷っております。 ご指導のほどお願いします。 記憶にある図解です。 ┌──────────┐extends 1レコードクラス │          │ │┌┬┬┬┬┬┬┬┬┐│ ││││││││││││ │└┴┴┴┴┴┴┴┴┘│ │          │ └──────────┘ ┌┐ ││が1レコードクラスに相当します。 └┘

    • ベストアンサー
    • Java
  • javaのswingで、JLabelを継承したコンポーネントのインスタ

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

    • ベストアンサー
    • Java
  • css定義でこんなものを…

    Dreamweaver2004MX 添付画像のようなレイアウトをcssで定義してみたいのですが、 可能でしょうか? css関連のサイトを色々と検索し、やってみましたが、 css初心者としては、難しくて満足のいくものが出来ませんでした。 宜しくお願いします…。 ※添付画像の「画像」とその下にある「SAMPLE」が途中で 切れてしまってますが作成したいものは、つながっています。 わかりずらくて申し訳御座いません。

    • ベストアンサー
    • HTML
  • 【VC++】クラスの追加方法について

    VC++の操作方法についての質問です。 現在、VC++2005を用いて、MFCダイアログベースアプリケーションを作成しています。 クラスの追加方法についての質問ですが、 「クラスビュー」⇒「プロジェクト」で右クリック⇒「追加」⇒「クラス」でウィザードに従って追加すると、 ウィザード内で基本クラスをコンボボックスより選択しなければならず、 この方法で追加すると、選択した基本クラスを継承する形でクラスが自動生成され、クラスビューにマップと基本型が追加されます。 現在作成に当たって参照しているサンプルプログラムでは、新たにクラスが定義されているようですが、 マップと基本型は生成されておらず、基本クラスも定義されていないのです。 どのように操作すれば、サンプルのように基本クラスを定義せず、 マップと基本型も追加されずに、クラスを追加できるのでしょうか? また補足ですが、クラスを追加した後は、別の自分で定義した親クラスを継承させるようにコードを変更したいと思っております。 お分かりの方おられましたら、お手数ですがご教授お願い致します。

  • awt でGUI を作っているのですがテキストフィールドのことで

    こんばんは。Frameクラスを継承してGUIを作成していたのですが、 テキストフィールドを配置したのはいいのですが、テキストフィールドにsetText()をすると左揃えになる(右揃えを希望してます)ので、右揃えにしようとネットで検索しましたが、JFrameクラスだったら、 TextField kihon=new JTextField("基本給",JTextField.RIGHT); のように、JTextField.RIGHTを第2引数に指定すればできるみたいですが、Frameクラスではできないかと思い、TextField.RIGHTとやったみたのですが、右揃えにはなりませんでした。(コンパイルエラーになりました)JFrameクラスを継承してればよかったのですが、大分作ってしまったので、どなたかFrameクラスのTextFieldで右揃えにする方法を教えてはいただけないでしょうか。

    • ベストアンサー
    • Java
  • ActiveXコンポーネントのデザイン部分について

    VB6でOCXを作成しましたが、デザイン(表示)部分でわからないことがあります。 作成したOCXを別のプログラムでコンポーネント参照した際に、 通常タイマーならタイマーの画像が、ボタンならボタン形状のツールバーが表示されるのですが、デフォルト画像(表現しにくいのですが青のタスクバーに4つのボタンと鉛筆マーク)が表示されます。 これをオリジナルデザインにすることは可能でしょうか? また、使用する際にタイマーイベントのようにデザイン時にはコンポーネントが見えていて、実行時には見えなくする方法が知りたいです。今は実行させると、作成したフォームが丸見え状態です。 あとVB6で作成したコンポーネントはVisualStudioの他のバージョン(2003や2005)でも使えるのでしょうか? 最近ActiveXコンポーネントの作成がわかり喜んでいたのですが、つめが甘いのかデザイン部でつまずいています。ActiveXコンポーネントは古い技術でしょうか。 ActiveXコンポーネントについて詳しく書かれている書籍はありますか? できればVB6を希望しますが、VC6でも構いません。

  • AS3.0のクラス定義に関して質問です。

    クラス定義についていまいちしっくりこないというか、完全に理解しきれていません。 僕が悩んでいるのは、以下の事です。 ステージ上のインスタンス1個1個に、全く別のクラスをそれぞれ定義したいのですが、その方法がわかりません。 そのインスタンスを配置しているレイヤーのタイムラインに直接コードを書くと、「未定義である可能性が高いメソッド addFrameScript の呼び出しです。 」とでてしまい、コードを適用できません。 今はMain.asというASファイルを作り、プロパティのクラスというところ(こういうのがドキュメントクラス?)に『Main』と入力して、そのFLASH上のインスタンス1個だけに対して定義しています。 そのほかのインスタンスにも違う名前で違う処理のASファイルをクラス定義する方法が知りたいです。 何分AS3.0初心者なものですので、とんちんかんなことを言ってるかも知れませんが、 何卒ご教示のほどお願い申し上げます。

  • AS3.0のクラス定義に関して質問です。

    クラス定義についていまいちしっくりこないというか、完全に理解しきれていません。 僕が悩んでいるのは、以下の事です。 ステージ上のインスタンス1個1個に、全く別のクラスをそれぞれ定義したいのですが、その方法がわかりません。 そのインスタンスを配置しているレイヤーのタイムラインに直接コードを書くと、「未定義である可能性が高いメソッド addFrameScript の呼び出しです。 」とでてしまい、コードを適用できません。 今はMain.asというASファイルを作り、プロパティのクラスというところ(こういうのがドキュメントクラス?)に『Main』と入力して、そのFLASH上のインスタンス1個だけに対して定義しています。 そのほかのインスタンスにも違う名前で違う処理のASファイルをクラス定義する方法が知りたいです。 何分AS3.0初心者なものですので、とんちんかんなことを言ってるかも知れませんが、 何卒ご教示のほどお願い申し上げます。

専門家に質問してみよう