Сейчас попробую сделать короткий список неплохой литературы (извините, если кого-то повторю ):
1. Брюс Эккель - "Философия Java"
2. Роберт Седжвик, Кевин Уэйн - Algorithms / Алгоритмы на Java
3. К. Сьерра, Б. Бейтс - Изучаем Java (Мировой компьтерный бестселлер)(2012).
4. Хорстманн К., Корнелл Г. - Java 2. Основы (Библиотека профессионала)(2 тома)
5. Ноутон П., Шилдт Г. - Java. Наиболее полное руководство.
Также неплохим приложением будут книги:
1. Мартин Р. - Чистый код. Создание, анализ и рефакторинг.
2. Гудлиф Питер - Ремесло программиста. Практика написания хорошего кода.
3. Фримен Эр., Фримен Эл., Бейтс Б., Сьерра К. - Паттерны проектирования.
Следует отметить что основным источником также является документация Oracle, которую можно найти на их официальном сайте (http://docs.oracle.com/javase/).
Еще к неплохим веб-ресурсам, которые могут оказать огромную помощь при изучении java, можно добавить:
http://stackoverflow.com/ - форум, где можно найти ответы на интересующие тебя вопросы из области программирования (в том числе и Java).
http://kharkovitcourses.blogspot.com/p/java-core-course.html - вроде норм курсы (канал youtube - http://www.youtube.com/channel/UCuIctN7x71qam9K_ZxS1W2A )
Также можно искать курсы по Java здесь:
http://www.intuit.ru
http://hexlet.org
Желательно также вначале ознакомится с Java Code Conventions, которые можно найти на сайте Oracle.
Cпасибо за внимание и успехов в изучении Java.
class MyView extends JFrame {
...
JButton button = new JButton();
button.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
Controller.getInstance().fireEvent(Events.OPEN_WINDOW);
}
});
...
}
void fireEvent(Event event) {
for (Listener listener: listeners) {
listener.onEvent(event);
}
}
Controller implements Listener {
...
void onEvent(Event event) {
if ( event.equals(Events.OPEN_WINDOW) ) {
// put here code for initializing and opening the window
// NOTE: new window also can be listener of specific events
}
}
...
}
class MyView extends JFrame {
...
JButton button = new JButton();
button.addOnTextChangeListener(new TextChangeListener() {
public void textChanged(TextChange e) {
Controller.getInstance().fireEvent(new Event(Events.TEXT_CHANGE, e.getNewText()));
}
});
...
}
Controller implements Listener {
...
void onEvent(Event event) {
if ( event.equals(Events.TEXT_CHANGE) ) {
// find and update the module
getTextContainer().setText(event.getData());
}
}
...
}