7

ボタンクラス:

class SubmitButton extends JButton implements ActionListener {
    public SubmitButton(String title){
        super(title);
        ....

私が宣言する場所:

SubmitButton submit = new SubmitButton("Submit");
submit.setBounds(530+150, 200, 100, 25);

super(title) は文字列タイトルをボタンのタイトルにどのように設定しますか? 通常の JButton のメソッド .setText() と同じことをどのように行いますか?

つまり、super() を呼び出すと .setText() と同じことがどのように行われるのでしょうか? super() はどのようにしてタイトルの変更を認識したのでしょうか? .setText() は、文字列をパラメーターとして受け取る JButton クラスの唯一のメソッドですか?

4

6 に答える 6

23
  • SubmitButton は JButton を拡張します
  • JButton には、次のような (簡略化された) コンストラクターがあります。

    public JButton(String title) {
        setText(title);
    }
    
  • SubmitBUtton にはコンストラクターがあります。

    public SubmitButton(String title) {
        super(title);
    }
    

SubmitButton コンストラクターはスーパークラス (JButton) コンストラクターを呼び出しており、それが setText を呼び出しています。内部的には JButton の動作が異なる場合がありますが、効果は同じです。

全体的なポイントは、super(...) がスーパークラス コンストラクターを呼び出すことです。

于 2008-12-20T03:49:38.843 に答える
7

JButton は、複数のコンストラクターをサポートする中心的な Java Swing クラスです。これらのコンストラクターの 1 つを使用すると、ボタン ラベルのテキストを設定できます。

super(title) を追加しても、実際には呼び出しは行われませんでした。いずれにしても、親のコンストラクターが呼び出されたはずですが、どのコンストラクターを呼び出すかを選択するのに役立ちました。

setText() 操作を使用すると、ボタンが作成された後で (通常は) 表示される前に、テキストを変更できます。

于 2008-12-20T03:46:52.673 に答える
4

SubmitButton がコンストラクタ SubmitButton(String title) で初期化される場合、親/スーパー クラス コンストラクタをタイトルで呼び出します。super(title) を指定しなかった場合、Java コンパイラはスーパー クラスのデフォルト コンストラクタを呼び出すコードを自動的に挿入します。そうすると、SubmitButton を作成するときにタイトルが設定されません。

また、スーパークラス (JButton) はそのコンストラクター内で .setText(string) を使用している可能性があり、それが同じ機能を実行する理由です (実際の Java ソースを確認する必要があります)。

http://www.javaworld.com/jw-10-2000/jw-1013-constructors.html?page=2
http://leepoint.net/notes-java/oop/constructors/constructor.html

于 2008-12-20T03:49:25.710 に答える
2

Java のすべての場合において、その「呼び出し」super()は親クラスの ctor を呼び出します。すべての関数と同様に、ctor を呼び出すと、Java パターンは名前とパラメーターの型に一致します。 JButtonは文字列引数で ctor を宣言するため、super(title)呼び出すと、単一の文字列引数を取る直接のスーパークラス (JButton) のコンストラクターが呼び出されるという効果があります。

于 2008-12-20T03:52:53.657 に答える
1

http://java.sun.com/javase/6/docs/api/javax/swing/JButton.html#JButton(java.lang.String)

(URL全体をコピペします。何らかの理由で文字列部分がリンクされていません)

上でリンクされた JButton クラスで定義されたコンストラクターを呼び出して、ボタンのテキストを渡された String に設定します。super() は、スーパークラス コンストラクターへの呼び出しです。

于 2008-12-20T03:45:01.317 に答える