2013-04-25 4 views
0

Я относительно новичок в программировании на Java и, возможно, пропустил что-то очевидное, так что несите меня.Java: параметры метода создания событий

Я создаю программу, которая использует Swing API с JDesktopPane для создания графического интерфейса. На главном экране отображается кнопка «Новое окно». Пользователь нажимает на него, а новый JInternalFrame создается и добавляется в JDesktopPane. Как в следующем, упрощенном методе:

protected void createNewWindow(JPanel panel) { 

    JInternalFrame fooFrame = new JInternalFrame(); 
    fooFrame.setContentPane(panel); 
    desktop.add(fooFrame); 
} 

Мой вопрос в том, что это. Скажите, что пользователь нажимает кнопку десять раз. Создаются десять JInternalFrames. Все они являются переменными метода, так что они имеют одно и то же имя.

Что происходит с этими старыми переменными fooFrame? Собирает ли сборщик мусора и уничтожает их на любом этапе? Я бы не подумал, что все еще держит ссылку на них. Есть ли способ получить доступ к любому из этих старых fooFrames? Скажем, я хотел изменить цвет текста на JPanel на четвертом из десяти fooFrames. Любой способ сделать это?

Я знаю, что это очень глупый способ сделать что-то, и просто создать экземпляр JInternalFrame, возможно, массив, чтобы создать экземпляр в методе и добавить JDesktopPane. Мой вопрос был больше из любопытства, чем что-либо.

ответ

2

Что происходит с этими старыми переменными fooFrame? Собирает ли сборщик мусора и уничтожает его на любом этапе?

Ваш объект desktop держит ссылку на fooFrame, созданный в методе, каждый из них будет иметь Differnet ссылку и будет поддерживаться desktop. Как только desktop выйдет из сферы действия, они будут иметь право на сбор мусора. Обычно переменные метода имеют право на сбор мусора после того, как элемент управления выходит из метода, поскольку они поддерживаются внутри области метода, но в вашем случае у вас есть desktop, который поддерживается на уровне класса.

+0

Спасибо, Habib. Расторгнул это для меня. –

+0

@TomSprud, добро пожаловать – Habib

Смежные вопросы