처음에 두 개의 JFrame을 사용한다고 언급하셨지만 디자인에는 하나의 JFrame(frame1)이 포함된 것으로 보입니다. 그리고 검색 결과를 표시하기 위한 JDialog입니다. JDialog는 상위 창에 종속되므로 이러한 구별이 중요합니다.
JFrame 및 JDialog를 포함한 GUI 개체 간에 참조를 전달하려면 표준 Java 참조를 사용할 수 있습니다. 한 창이 다른 창을 열 때 상위 창은 일반적으로 하위 창에 대한 참조를 유지하고 해당 창에 대한 메서드를 호출할 수 있습니다.
하위 창에서 데이터를 검색할 시기 결정 창은 유형에 따라 다릅니다.
다음은 다음과 같습니다. 프레임1의 버튼으로 JDialog를 열고 프레임1의 JTextField를 JDialog의 JTextField에 입력된 텍스트로 채우는 간단한 예는 다음과 같습니다.
<code class="java">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 { public static void main(String[] args) { java.awt.EventQueue.invokeLater(() -> createAndShowUI()); } private static void createAndShowUI() { JFrame frame1 = new JFrame("frame1"); MyFramePanel panel1 = new MyFramePanel(); frame1.getContentPane().add(panel1); frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame1.pack(); frame1.setLocationRelativeTo(null); frame1.setVisible(true); } static class MyFramePanel extends JPanel { private JTextField textField; private JButton openDialogButton; private JDialog dialog; private MyDialogPanel dialogPanel; public MyFramePanel() { textField = new JTextField(10); textField.setEditable(false); textField.setFocusable(false); openDialogButton = new JButton("Open Dialog"); openDialogButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { openDialogAction(); } }); add(textField); add(openDialogButton); } private void openDialogAction() { if (dialog == null) { Window win = SwingUtilities.getWindowAncestor(this); if (win != null) { dialog = new JDialog(win, "My Dialog", ModalityType.APPLICATION_MODAL); dialogPanel = new MyDialogPanel(); dialog.getContentPane().add(dialogPanel); dialog.pack(); dialog.setLocationRelativeTo(null); } } dialog.setVisible(true); // Here, after the modal dialog is disposed, the text from the // dialog's JTextField is retrieved and set into this JDialog's JTextField. textField.setText(dialogPanel.getFieldText()); } } static class MyDialogPanel extends JPanel { private JTextField textField; private JButton okButton; public MyDialogPanel() { textField = new JTextField(10); okButton = new JButton("OK"); okButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { okButtonAction(); } }); add(textField); add(okButton); } public String getFieldText() { return textField.getText(); } private void okButtonAction() { Window win = SwingUtilities.getWindowAncestor(this); if (win != null) { win.dispose(); } } } }</code>
JTable에서 데이터를 검색하려면 유사한 기술을 사용할 수 있습니다. 하지만 테이블 행 선택과 같은 추가 요소를 고려해야 할 수도 있습니다.
위 내용은 다음은 기사의 핵심을 포착하는 몇 가지 질문 기반 제목입니다. * Java Swing에서 JFrame과 JDialog 사이에 값을 전달하는 방법은 무엇입니까? * 하위 창에서 데이터 검색: JFrames, JDialogs,의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!