/ / pourquoi est-ce que setSize de JInternalFrame ne fonctionne pas - java, swing, jinternalframe, jdesktoppane

pourquoi setSize de JInternalFrame ne fonctionne pas - java, swing, jinternalframe, jdesktoppane

Je crée une JFrame et j’ajoute un JDesktopPane auJFrame, puis ajoutez un JInternalFrame dans le JDesktopPane, la taille initiale "JInternalFrame" est identique à celle de JDesktopPane. Lorsque le JFrame est maximisé, le JDesktopPane est également maximisé, mais le JInternalFrame n'est pas maximisé. Et je veux que le JInternalFrame soit maximisé Lorsque la JFrame est agrandie, j'ajoute donc un WindowStateListener pour la JFrame; lorsque la JFrame est agrandie, j'appelle la méthode JInternalFrame "setSize" pour que la taille de JInternalFrame soit identique à celle de JDesktopPane, le code est le suivant:

addWindowStateListener(new java.awt.event.WindowStateListener() {

public void windowStateChanged(java.awt.event.WindowEvent evt) {
jInternalFrame.setSize(jDesktopPane1.getWidth(),
jDesktopPane1.getHeight());
}
});

mais ça ne marche pas. mais lorsque je clique sur pour agrandir JFrame, je clique sur pour réduire JFrame, puis sur la barre des tâches pour que JFrame soit visible, et cela fonctionne.

Pourquoi ça se passe comme ça?

Réponses:

1 pour la réponse № 1

J'utiliserais un ComponentListener sur le JDesktopPane et écoutez le componentResized un événement. Ensuite, chaque fois que la taille des volets du bureau change, que ce soit en maximisant / restauré ou en redimensionnant le cadre, vous en êtes averti.


1 pour la réponse № 2

Appelez-vous repaint sur le conteneur qui contient le JInternalFrame, le JDesktopPane? Si non, vous devriez.


1 pour la réponse № 3

Il semble que vous souhaitiez simplement que JInternalFrame suive l’état de JFrame. Pourquoi ne pas simplement définir le JInternalFrame pour être maximisé?

jInternalFrame.setMaximum( true );