这种方法嵌套如何工作? [TableRowRenderingTip.java]
问题描述:
当在java文档中寻找某些东西时,我意识到存在某种我以前从未见过的嵌套,所以如果你能解释它是什么或者它是如何调用的,我会非常感激。这种方法嵌套如何工作? [TableRowRenderingTip.java]
这是我在*中的第一个问题,所以我很抱歉,如果我违反了任何规则。
代码:
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完整的源代码。
答
您发现的内容称为匿名类。在这个例子中,它扩展了JTable
类,但是因为它不想多次使用它,所以它不给新类的名称(因此是匿名的),而是立即创建它的一个实例,并将它存储在变量table
变量。 在新类中,它覆盖原始JTable
的prepareRenderer
方法。
在这里,你可以阅读更多有关匿名类: https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
感谢您的快速响应! – MikeMapanare