【问题标题】:How does this method nesting work? [TableRowRenderingTip.java]这种方法嵌套是如何工作的? [TableRowRenderingTip.java]
【发布时间】:2017-12-23 17:58:50
【问题描述】:

当我在 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完整源代码。

【问题讨论】:

    标签: java tablecellrenderer


    【解决方案1】:

    你发现的被称为匿名类。在示例中,它扩展了JTable 类,但是因为它不想多次使用它,所以它没有为新类命名(因此是匿名的),而是立即创建它的一个实例,并将其存储在table 变量。 在新类中,它覆盖了原始 JTableprepareRenderer 方法。

    您可以在此处阅读有关匿名类的更多信息: https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

    【讨论】:

    • 感谢您的快速响应!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2019-10-10
    • 2023-03-13
    • 1970-01-01
    • 2021-09-29
    相关资源
    最近更新 更多