2017-07-18 3 views
1

Javaのドキュメントで何かを探しているとき、私は以前に見たことのないネスティングのいくつかの種類があることに気が付いたので、それが何であるか、どのように呼び出されるか説明できれば非常に感謝します。このメソッドのネストはどのように機能しますか? [TableRowRenderingTip.java]

これはStackOverflowの最初の質問ですので、ルールを破ってもごめんなさい。

コード:

private JComponent createData(DefaultTableModel model) 
{ 
    JTable table = new JTable(model) 
    { //What are these brackets for? I know it contains a method but I've never seen a method "nested" with a variable initialization. 
     public Component prepareRenderer(TableCellRenderer renderer, int row, int column) 
     { 
      Component c = super.prepareRenderer(renderer, row, column); 

      // Color row based on a cell value 

      if (!isRowSelected(row)) 
      { 
       c.setBackground(getBackground()); 
       int modelRow = convertRowIndexToModel(row); 
       String type = (String)getModel().getValueAt(modelRow, 0); 
       if ("Buy".equals(type)) c.setBackground(Color.GREEN); 
       if ("Sell".equals(type)) c.setBackground(Color.YELLOW); 
      } 

      return c; 
     } 
    }; 

が本当に適切に質問エディタを使用する方法を知ってはいけません。

ありがとうございます!

Here's完全なソースコードです。

答えて

1

あなたが見つけたものは、匿名クラスと呼ばれています。この例ではJTableクラスが拡張されていますが、複数回使用する必要がないため、新しいクラス(つまり匿名)に名前を与えず、インスタンスを即座に作成して変数tableに格納します。 新しいクラスでは、元JTableprepareRendererメソッドをオーバーライドします。ここで

匿名クラスの詳細を読むことができます:高速応答のための https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

+0

感謝を! – MikeMapanare

関連する問題