О применении вложенных классов советую поговорить со знакомыми программистами на Java и спросить как они оформляют обработчики событий от GUI элементов. Какая-то часть респондентов ответит, что через вложенные классы.
Вся беда - таких знакомых нет. Так что, если у вас есть что сказать, очень интересно обсудить.
Пример кода для Саши могу вот показать.
Правда код не мой, а моего студента
/* Это секция импорта классов и пакетов, здесь мы пишем то,
* чьи функции мы хотим позаимствовать в нашем классе.
* Притом мы не знаем как они реализованы - это и есть инкапсуляция.
**/
import java.awt.Container;
import java.awt.Font;
import java.awt.TextArea;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
/**
* @author Scotty
* Здесь мы берём стандартный класс JFrame
* и наследуя его, дополняем его функцими,
* которые нам нужны. А именно переписываем его
* конструктор на свой чтобы не делать это при создании
* класса MyShell. Таким образом мы прибегаем к
* полиморфизму.
*/
@SuppressWarnings("serial")
class MyShellFrame extends JFrame
{
private TextArea ShellTextArea;
public MyShellFrame()
{
setSize(700, 500);
ShellTextArea = new TextArea("", 1024, 64);
Font ShellFont = new Font("DialogInput", Font.PLAIN, 12);
ShellTextArea.setFont(ShellFont);
Container contentPane = getContentPane();
contentPane.add(ShellTextArea, "Center");
addWindowListener(new WindowCloser());
}
public void appendString(String inputString)
{
ShellTextArea.append(inputString);
}
// вот он вложенный класс
private class WindowCloser extends WindowAdapter
{
public void windowClosing(WindowEvent event)
{
System.exit(0);
}
}
}