Interface Arrojada bem Definida

Galera,

Preciso de uma ajuda dos feras em interface Gráfica.

Preciso desenvolver uma interface desktop onde:

Essa interface deve parecer com uma calculadora somente.
Cada botão da calculadora terá uma funcionalidade diferente que acessará
a camada controller. ( as funcionalidades não vem ao caso )
Ao passar o mause sobre as teclas da caluladora, deve dar a sensação de mouseover.
Ao clicar a tecla deve ser trocada pela imagem da tecla “clicada”.

O problema:
Eu preciso desenvolver uma interface robusta e para vocês terem uma idéia
coloquei em anexo a imagem da minha interface.

Qual a melhor API para atender as necessidades acima, sendo que os botões
são muitos e bastante próximos um do outro.

Estou quebrando a cabeça em usar sobreposição de imagens usando “GridBagConstraints”.
Será que é a melhor saída?

Tks

Conhece o Adobe Flex? Na minha opinião é uma das melhores alternativas para desenvolver aplicações desktop e web. Além de fornecer uma interface rica, pode ser usada por diferentes backend (Java, .net, PHP, etc)

abraços.