Boa tarde a todos.
Olha, a única maneira de você conseguir fazer isto, não é só implementando um Listener de Evento, mas também reescrevendo o método Paint do JInternalFrame desta forma:
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JInternalFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class DesktopFrame extends JInternalFrame {
private static final long serialVersionUID = 1L;
public DesktopFrame(String title){
super(title, true, true, true, true);
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setPreferredSize(new Dimension(300, 200));
pack();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
}
@Override
public void paint(Graphics g) {
super.paint(g);
Dimension dim = this.getParent().getSize();
int x = (int)(dim.getWidth() - this.getSize().getWidth()) / 2;
int y = (int)(dim.getHeight() - this.getSize().getHeight()) / 2;
this.setLocation(x,y);
}
Vale lembrar que o objeto this.getParent() retorna o container do JInternalFrame, que neste caso é o JDesktopPane, portanto o seu JInternalFrame tem que está contindo nele.
Outra sugestão é que você faça desta classe que apresentei, um JInternalFrame genérico, e os demais JInternalFrame estenda (Herda) desta JInternalFrame genérico para que você não fique reescrevendo o método Paint a toda hora.
Coloque este código abaixo, também dentro do seu JFrame principal.
...
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
....
Pois ele apresenta um visual de uma GUI muito agradável.
Um detalhe, que este método Paint reescrito, todos os JInternalFrames serão centralizados, até na abertura dos mesmos, e isto engessa a localização dos mesmos no centro, até se você tentar arrastá-los para outra posição, eles retornarão para o centro, e você não conseguirá colocá-los em outra posição.
Um abraço.