3

誰かが私が次の構成を理解するのを手伝ってもらえますか?これが初期化子なのか匿名クラスなのか理解できません。私はこの構文に精通していません。

   JTable jt = new JTable(data, fields) **{
            public TableCellRenderer getCellRenderer(int row, int column) {
                // TODO Auto-generated method stub
                return renderer;
            }
        };**
4

2 に答える 2

6

JTable を拡張する匿名内部クラスを作成し、getCellRenderer メソッドをオーバーライドします。

長い説明:

標準のクラス宣言を使用する代わりに、名前を明示的に割り当てずに JTable を拡張するクラスを作成しています。

public class ExtendedJTable extends JTable{}

このクラスの可視性は、それが定義およびインスタンス化されているクラスに限定されます。たとえば、投稿したコードのように、現在のクラス コンテキストに限定された目的のために、特定のクラス (JTable) のメソッド (getCellRenderer()) をオーバーライドする必要がある場合に非常に便利です。

このアプローチには、いくつかの利点といくつかの制限があります。より深い議論については、この記事をご覧ください。

于 2011-09-02T20:03:19.560 に答える
2

あなたはここで2つのことをしています:

  • JTable を拡張するクラスのオブジェクトを作成します。これは、他の場所で個別に宣言されていないため、匿名クラスです。
  • このクラスでは、JTable のメソッド getCellRenderer(int row, int column); をオーバーライドします。
于 2011-09-02T20:05:18.703 に答える