Valores de passagem entre JFrames

Eu tenho dois Jframes em que frame1 tem alguns campos de texto e quando um botão em frame1 é clicado, abro outro JFrame que contém uma checkbox de pesquisa e um JTable contendo resultados de pesquisa.

Quando clico em uma linha de resultado no JTable, quero que esses valores específicos sejam refletidos nos campos de texto frame1.

Eu tentei passar o object do JFrame1 como um parâmetro, mas não tenho uma ideia clara de como conseguir isso. Qualquer ajuda seria muito apreciada. obrigado

Primeiro de tudo, o design do seu programa parece um pouco fora, como se você estivesse usando um JFrame para uma de suas janelas onde você deveria estar usando um JDialog, pois parece que uma janela deve ser dependente da outra.

Mas, independentemente disso, você passa referências de objects da GUI da mesma forma que faria com o código Java não-GUI padrão. Se uma janela abrir a outra (a segunda é frequentemente a checkbox de diálogo), a primeira janela normalmente já contém uma referência à segunda janela e pode chamar methods dela. A chave geralmente é quando a primeira janela chama os methods do segundo para obter seu estado. Se o segundo é um modal dialog, então o quando é fácil – imediatamente após o diálogo retorna que estará no código imediatamente após você definir o segundo diálogo visível. Se não for um modal dialog, provavelmente você desejará usar um ouvinte de algum tipo para saber quando extrair as informações.

Dito isto, os detalhes dependerão da estrutura do seu programa, e você precisará nos informar mais sobre isso se quiser ajuda mais específica.

Para um exemplo simples que tem uma janela aberta outra, permite ao usuário inserir texto nas janelas de diálogo JTextField e, em seguida, coloca o texto no JTextField da primeira janela, por favor, dê uma olhada nisso:

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 classs 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(); } } } 

Você faria uma técnica muito semelhante para obter informações de um JTable.

E, novamente, se essas informações não ajudarem, informe-nos mais sobre seu programa, inclusive nos mostrando alguns de seus códigos. O melhor código para mostrar é um pequeno exemplo compilável, um SSCCE semelhante ao que eu postei acima.