Pasar valores entre JFrames

Tengo dos Jframes donde frame1 tiene algunos campos de texto y cuando se hace clic en un botón en frame1, abro otro JFrame que contiene un cuadro de búsqueda y una JTable que contiene resultados de búsqueda.

Cuando hago clic en una fila de resultados en JTable, quiero que los valores particulares se reflejen en los campos de texto de fotogtwig 1.

Intenté pasar el objeto de JFrame1 como parámetro, pero no tengo una idea clara de cómo lograrlo. Cualquier ayuda sería muy apreciada. Gracias

En primer lugar, el diseño de su progtwig parece un poco desajustado, como si estuviera utilizando un JFrame para una de sus ventanas donde, de hecho, debería estar usando un JDialog, ya que suena como si una ventana dependiera de la otra.

Pero, independientemente, pasa las referencias de los objetos de la GUI de la misma manera que lo haría con el código Java estándar que no es una GUI. Si una ventana abre la otra (la segunda a menudo es el diálogo), entonces la primera ventana normalmente ya contiene una referencia a la segunda ventana y puede invocar métodos fuera de ella. La clave a menudo es cuándo hacer que la primera ventana invoque los métodos del segundo para obtener su estado. Si el segundo es un cuadro de diálogo modal, entonces el cuándo es fácil, inmediatamente después de que vuelva a aparecer el diálogo, que estará en el código inmediatamente después de que configure el segundo cuadro de diálogo visible. Si no es un cuadro de diálogo modal, entonces probablemente desee utilizar un tipo de oyente para saber cuándo extraer la información.

Habiendo dicho esto, todos los detalles dependerán de la estructura de su progtwig, y ​​tendrá que decirnos más sobre esto si desea ayuda más específica.

Para un ejemplo simple que tiene una ventana, abrir otra, permite al usuario ingresar texto en las ventanas de diálogo JTextField, y luego ubica el texto en JTextField de la primera ventana, eche un vistazo a esto:

import java.awt.Window; import java.awt.Dialog.ModalityType; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class WindowCommunication { private static void createAndShowUI() { JFrame frame = new JFrame("WindowCommunication"); frame.getContentPane().add(new MyFramePanel()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } // let's be sure to start Swing on the Swing event thread public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { createAndShowUI(); } }); } } class MyFramePanel extends JPanel { private JTextField field = new JTextField(10); private JButton openDialogeBtn = new JButton("Open Dialog"); // here my main gui has a reference to the JDialog and to the // MyDialogPanel which is displayed in the JDialog private MyDialogPanel dialogPanel = new MyDialogPanel(); private JDialog dialog; public MyFramePanel() { openDialogeBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { openTableAction(); } }); field.setEditable(false); field.setFocusable(false); add(field); add(openDialogeBtn); } private void openTableAction() { // lazy creation of the JDialog if (dialog == null) { Window win = SwingUtilities.getWindowAncestor(this); if (win != null) { dialog = new JDialog(win, "My Dialog", ModalityType.APPLICATION_MODAL); dialog.getContentPane().add(dialogPanel); dialog.pack(); dialog.setLocationRelativeTo(null); } } dialog.setVisible(true); // here the modal dialog takes over // this line starts *after* the modal dialog has been disposed // **** here's the key where I get the String from JTextField in the GUI held // by the JDialog and put it into this GUI's JTextField. field.setText(dialogPanel.getFieldText()); } } class MyDialogPanel extends JPanel { private JTextField field = new JTextField(10); private JButton okButton = new JButton("OK"); public MyDialogPanel() { okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { okButtonAction(); } }); add(field); add(okButton); } // to allow outside classes to get the text held by the JTextField public String getFieldText() { return field.getText(); } // This button's action is simply to dispose of the JDialog. private void okButtonAction() { // win is here the JDialog that holds this JPanel, but it could be a JFrame or // any other top-level container that is holding this JPanel Window win = SwingUtilities.getWindowAncestor(this); if (win != null) { win.dispose(); } } } 

Haría una técnica muy similar para obtener información de una JTable.

Y nuevamente, si esta información no lo ayuda, entonces cuéntenos más sobre su progtwig, incluso mostrándonos parte de su código. El mejor código para mostrar es un pequeño ejemplo comstackble, un SSCCE similar a lo que he publicado anteriormente.