Por que o JInternalFrame não tem a mesma aparência da JFrame ?

Antes de iniciar a aplicação eu já deixei para a LookAndFeel padrão

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
  • No Linux Mint a aparência da JInternalFrame fica muito feia.
  • No Linux Ubuntu a aparência da JInternalFrame fica menos feia.
  • No Windows 10 a aparência da JInternalFrame fica muito boa.

Mas nos 3 sistemas operacionais a JInternalFrame não tem a mesma aparência da JFrame.

Por que o JInternalFrame não tem a mesma aparência da JFrame?

São componentes diferentes, por que deveriam ter a mesma aparência?

O JFrame estende de JWindow, enquanto o JInternalFrame estende de JComponent (da mesma forma que outros componentes como botões, textareas e comboboxes). Diria que faz sentido eles não serem idênticos, pois a diferença visual ajuda a distinguir um do outro.

Quanto ao visual ser diferente entre plataformas, deve-se ao fato de que você está usando o lookAndFeel do sistema. Como cada sistema tem seu próprio lookAndFeel, o visual dos componentes varia mesmo, ficando melhor em alguns e nem tanto em outros.

Abraço.

Porque ele não é um JFrame. A resposta parece meio boba, mas é isso mesmo.
Se o aspecto está muito desagradável nos outros sistemas operacionais talvez seja melhor você especializar um JFrame ou JDialog de forma a criar o seu próprio “InternalFrame”.

Se você quer ter o mesmo aspecto em todos os sistemas, teria que usar o “Cross Platform Look And Feel”, particularmente acho ele feio:

UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());