22

java.awt.Component.getName()のために使われますか?null私が NetBeans で構築したアプリケーションには常にあるようです。コンポーネントごとにヘルプ テキストを保存することを考えています。ツールチップを使用したくありません。ヘルプ テキストを表示する別のパネルがあります。

4

9 に答える 9

20

Component.setName(..) は、各コンポーネントに ID のような文字列を設定するために、主にルック アンド フィール実装クラスによって JDK で使用されます。

getName() は、コンポジット/親コンポーネント内の子コンポーネントの名前を設定するとき、および AWT および Swing デバッグ ロギング コードで toString() メソッドで使用されます。getName() メソッドは、一部の AWT/Swing テスト フレームワークでも使用されているのではないかと強く疑っています。

したがって、上記の getName() の使用法に依存していない場合は、ヘルプ メッセージに使用することをお勧めしますが、お勧めしません。

たぶん、あなたのデザインを再考する必要がありますか?名前を使用して、リソース バンドルからヘルプ テキストをロードするハッシュマップでルックアップを行いますか?

于 2008-10-22T19:55:45.553 に答える
6

フレームワークによって何かに使用されているのを見たことがありません。コンポーネントがメソッドに渡されている場合に便利なので、コンポーネントの名前を聞いて処理方法を決定できます。また、多くの UI テスト フレームワークでは、これを使用して、テスト スクリプト内でコンポーネントを名前で参照できるようにしています。ただし、ヘルプ テキストに使用できない理由はわかりません。

于 2008-10-22T19:11:55.563 に答える
2

FESTは、コンポーネントの名前を使用して、テストケースでコンポーネントを識別します。

于 2012-09-04T14:28:26.127 に答える
2

Herman Lintvelt の答えは、私のアプリにとって正しいものになりました。

HelpText.properties という名前のリソース バンドルを作成しました。名前=値のペアが含まれています。name=value ペアからの「名前」を使用して、各コンポーネントを setName()d しました。次に、フレームの getGlassPane() を使用して、すべてのマウスの動きをキャプチャしました。マウスが名前付きコンポーネント上を移動すると、バンドル内の名前が検索され、利用可能な場合はヘルプが表示され、マウスの動きが実際のコンポーネントに転送されます。

  • ガラス板の使い方はこちらをご覧ください。
  • リソースバンドルの使用に関するJan Newmarch のWeb ページは非常に役に立ちました。
  • Kevin Riff の回答は、リソース バンドルを見つける方法を理解するのに役立ちました。

うわー。2 日間だけの食事です。やっとJavaに慣れてきました:)

于 2008-10-22T21:55:31.253 に答える
1

このcomponent.getName()メソッドは主にリスナーで使用されます。コンポーネント ( ) の名前を設定するとcomponent.setName(name)、 のメソッド内からその特定のコンポーネントを呼び出すことができますListener

例:

public void someMethodOfsomeListener(SomeEvent e){
   if (e.getComponent().getName().equals(component.getName())
      //do stuff...
}

コンポーネントの名前を明示的に設定する必要があることに注意してください。そうしないと、 が返されnullます。

于 2009-07-17T15:08:37.660 に答える
0

また、java.awt.ComponentはXのヘビーウェイトオブジェクトだと思うので、xwininfoやxwdなどのプログラムで名前で指定できる場合があります。

JFrameで試してみましたが、setNameはウィンドウの名前を設定しませんでした。ウィンドウは、コンストラクターで渡した文字列によって名前が付けられました。しかし、テストするawtのみのサンプルコードがないため、上記の内容について間違っている可能性があります。

于 2008-10-22T19:26:28.763 に答える
0

私はそれを1つのクラスのリスナーを別々に処理するために使用します。object.addListenerを含むコンポーネントをコンテナーとしてではなく、そのオブジェクトを含むクラスとしてパラメーターとして受け取ります。最初に名前を設定するためのヒントを提供してくれたVivavinylに感謝します。それは役に立ち、うまくいきました。

于 2009-07-26T22:24:34.377 に答える
0

これは私が getName() を使用するものです:

    Frame[] frames = JFrame.getFrames();

    for (int i = 0; i < frames.length; ++i) {

        //get the frame
        Frame frame = frames[i];

        if (frame.getName().equals(frameName)) {

            //make the frame visible
            frame.setVisible(true);

            //focus the frame
            frame.requestFocus();

            //found
            return;

        }

    }
于 2009-09-24T00:43:18.400 に答える