Maison >Java >javaDidacticiel >Comment transmettre les données d'une JTable dans un JFrame aux champs de texte dans un autre JFrame ?
Transmission de données entre JFrames
Dans ce scénario, vous disposez de deux JFrames : frame1, qui comprend des champs de texte, et frame2, qui contient un champ de recherche et une JTable contenant les résultats de la recherche. Votre objectif est de refléter les valeurs sélectionnées dans la JTable dans les champs de texte du frame1.
Références d'objet et communication
Votre question mentionne le passage de l'objet du frame1 en tant que paramètre, mais il est crucial de comprendre que le passage de références entre des objets GUI suit les mêmes principes que le passage de références dans du code Java non-GUI. La référence au deuxième JFrame (frame2) est généralement accessible dans le premier JFrame (frame1), vous permettant d'invoquer ses méthodes directement.
Accès à l'état entre fenêtres
Le moment d'accès à l'état d'une fenêtre à partir d'une autre dépend de la relation entre les fenêtres. Pour les boîtes de dialogue modales, la première fenêtre peut récupérer les données immédiatement après le retour de la boîte de dialogue, c'est-à-dire le code exécuté après avoir rendu la boîte de dialogue visible.
Pour les boîtes de dialogue non modales, vous comptez souvent sur les écouteurs pour déterminer quand extraire le informations.
Exemple : Passage de texte entre Windows
Pour illustrer ce concept, considérons l'exemple suivant :
<code class="java">import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class WindowCommunication { public static void main(String[] args) { JFrame frame1 = new JFrame("Frame 1"); frame1.getContentPane().add(new JLabel("Text: ")); frame1.getContentPane().add(new JTextField(10)); JButton button = new JButton("Open Frame 2"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JDialog frame2 = new JDialog(frame1, "Frame 2"); frame2.getContentPane().add(new JTextField(10)); frame2.pack(); frame2.setVisible(true); } }); frame1.getContentPane().add(button); frame1.pack(); frame1.setLocationRelativeTo(null); frame1.setVisible(true); } }</code>
Dans cet exemple, lorsque le bouton dans frame1 est cliqué, un frame2 JDialog est ouvert. La référence à frame2 est détenue par frame1, permettant à ce dernier d'accéder et de manipuler le texte dans le JTextField dans frame2.
De même, vous pouvez récupérer des données d'une JTable dans votre scénario spécifique en utilisant des techniques basées sur l'écouteur pour déterminer quand la ligne souhaitée est sélectionnée dans le tableau.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!