Amar Das
Amar Das

Reputation: 13

How to get JDialog textFiels Value from JFrame

Hi I am new in Java coding and trying to design a user friendly desktop App with the help of JFrame and JDialog -

My JFrame is -

package com.myapp.ui;
    
import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JCheckBox;

public class MyFrame extends JFrame { 

private JPanel contentPane;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MyFrame frame = new MyFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public MyFrame() {

        setTitle("MyFrame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        
        JButton btnClickMe = new JButton("Click Me");
        btnClickMe.setBounds(271, 171, 115, 29);
        contentPane.add(btnClickMe);
        
        JCheckBox chckbxOpenDialog = new JCheckBox("Open Dialog");      
        chckbxOpenDialog.setBounds(25, 171, 139, 29);
        contentPane.add(chckbxOpenDialog);
        
        chckbxOpenDialog.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(chckbxOpenDialog.isSelected()== true){
                    MyDialog MD = new MyDialog();
                    MD.setModal(true);
                    MD.setVisible(true);
                }
            }
        });
        
        btnClickMe.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                 //Here I want to get the value of textFieldName and textFieldEmail from JDialog
                 //after Click on Confirm Button in JDialog and closing/disposing it
            }
        });
    }
}

My JDialog is -

package com.myapp.ui;

import java.awt.BorderLayout;
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class MyDialog extends JDialog {

    private final JPanel contentPanel = new JPanel();
    private JTextField textFieldName;
    private JTextField textFieldEmail;
    private JButton btnConfirm;

    public static void main(String[] args) {
        try {
            MyDialog dialog = new MyDialog();
            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            dialog.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public MyDialog() {
        setTitle("MyDialog");
        setBounds(100, 100, 450, 300);
        getContentPane().setLayout(new BorderLayout());
        contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
        getContentPane().add(contentPanel, BorderLayout.CENTER);
        contentPanel.setLayout(null);
        
        textFieldName = new JTextField();
        textFieldName.setBounds(108, 26, 146, 26);
        contentPanel.add(textFieldName);
        textFieldName.setColumns(10);
        
        textFieldEmail = new JTextField();
        textFieldEmail.setBounds(108, 68, 146, 26);
        contentPanel.add(textFieldEmail);
        textFieldEmail.setColumns(10);
        
        btnConfirm = new JButton("Confirm");
        btnConfirm.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //passing the Name and Email field value in JFrame
            }
        });
        btnConfirm.setBounds(132, 141, 115, 29);
        contentPanel.add(btnConfirm);
        
        MyFrame MF = new MyFrame();
        
    }
}

Both the JFrame and JDialog are in the same package. I am trying to get the value of

textFieldName and textFieldEmail from JDialog to JFrame

if any one can guide me the best possible way, would be relly great.

Upvotes: 0

Views: 56

Answers (1)

tomgeraghty3
tomgeraghty3

Reputation: 1254

You could:

  1. Add setters to MyFrame
  2. Pass MyFrame reference to MyDialog (using this) when it is created in the ActionListener
  3. In the ActionListener in MyDialog set fields in MyFrame

There are probably better ways to do this. The built in JOptionPane produces modal dialog windows that wait for user input. These would be better rather than passing references of JFrames to JDialog.

Also note that JavaFX has largely replaced Java Swing for desktop UIs

Upvotes: 1

Related Questions