Я думаю, это то, что вы хотите:
- Создать класс, расширяющий JPanel
- Переопределить метод paint () для рисования клавиш пианино
- Реализуйте MouseListener и MouseMotionListener и узнайте, когда пользователь щелкнул мышью по определенным клавишам
- Используйте StreamingPlayer в JFugue для динамического воспроизведения нот
Я являюсь автором JFugue, и я также хотел начать побочную работу, JFugueUI, которая бы обеспечивала такие вещи, как графические клавиатуры, которые люди могли бы включать в свои собственные приложения - поэтому, дайте мне знать, если заинтересованы в участии!