* Programme basique Une fenêtre avec deux boutons en bas, Quitter et Copier, au milieu un label et un text field, et en haut un label. Si vous ne connaissez pas les gestionnaires de placement, mettez-les l'un après l'autre avec l'instruction : getContentPane().setLayout (new FlowLayout ()); Copier copie le texte du text field (auparavant rempli par l'utilisateur) dans le label en haut de la fenêtre. Rajouter aussi un menu avec File->Quit et File->Copier, qui fait lui aussi la copie. Inspirez-vous de l'exemple de la partie Événements du cours pour apprendre comment exécuter du code Java quand on clique sur un bouton. * Programme basique évolué :o) Modifiez l'exercice précédent ainsi : - Quand vous appuyez sur le bouton "Copier", au lieu de copier le texte du JTextField dans votre JLabel, il le copie dans le JLabel de votre voisins. - Quand vous lancez votre interface graphique, le programme se met en écoute infinie sauf si on appuie sur un bouton "finir la com" pour fermer la socket. - Le programme doit faire serveur et client en même temps. * Balle a. Faites un programme qui affiche une balle remplie de taille 50x50 quelque part à gauche dans une fenêtre. b. Modifiez-le pour que, toutes les 500 ms, la balle change de centre : le centre se déplace 10 pixels à droite. Regardez le cours pour forcer le réaffichage de la fenêtre. c. Combinez-le avec le jeton : quand la balle arrive sur le côté droit, elle disparaît et un message est généré à une autre machine, qui fait afficher la balle sur son côté gauche, ainsi de suite. Le programme est maintenant fini. Mais vous pouvez toujours l'améliorer : d. Remplacer la communication UDP par une communication TCP. Quels seraient les avantages et les inconvénients ? e. Pendant que la balle n'est pas visible dans la fenêtre, cachez la fenêtre aussi. f. Si vous modifiez la taille de la fenêtre pendant l'exécution, le moment où la balle dépasse la fenêtre n'est plus le bon. Réglez ce problème en regardant dans l'aide comment rattraper l'événement de redimmensionnement de fenêtre.