Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7826843
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 2, 20262026-06-02T09:36:04+00:00 2026-06-02T09:36:04+00:00

Is there a way to set a dialog location relative to a JFrame ?

  • 0

Is there a way to set a dialog location relative to a JFrame?

I would like to center the dialog to the frame that houses my GUI, instead the dialog often appears in the center of the screen rather than within the GUI.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-02T09:36:05+00:00Added an answer on June 2, 2026 at 9:36 am

    Is there a way to set a location relative to another JFrame

    You can:

    • pass JFrame as argument for JDialog.setLocationRelativeTo(Component c)
    • set to desired Point from JFrame to JDialog.setLocation(Point p)

    EDIT

    all Swing code must be done on EventDispatchThread, meaning that setVisible(true) should be wrapped into invokeLater

    EDIT2

    when using the JFrame as Component c I am getting a cannot find symbol error

    not possible, some small mistake

    enter image description here

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.border.EmptyBorder;
    
    public class ClosingFrameDialog extends JFrame {
    
        private JFrame frame = new JFrame();
        private static final long serialVersionUID = 1L;
        private JMenuBar MenuBar;
        private JMenu File;
        private JMenuItem Exit;
        private JMenuItem ShowDialog;
        private JDialog dialog;
        private Point location;
    
        public ClosingFrameDialog() {
            Exit = new JMenuItem(" Exit ");
            Exit.addActionListener(new ExitListener());
            ShowDialog = new JMenuItem(" Show Dialog ");
            ShowDialog.addActionListener(showingDialog());
            File = new JMenu(" File ");
            File.add(Exit);
            File.add(ShowDialog);
            MenuBar = new JMenuBar();
            MenuBar.add(File);
            frame.addWindowListener(exitListener);
            frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
            frame.setJMenuBar(MenuBar);
            frame.setPreferredSize(new Dimension(400, 300));
            frame.setLocation(100, 100);
            frame.pack();
            frame.setVisible(true);
            SwingUtilities.invokeLater(new Runnable() {
    
                @Override
                public void run() {
                    createDialog();
                }
            });
        }
    
        private void createDialog() {
            JButton btn = new JButton(" Save changes ");
            btn.addActionListener(new ActionListener() {
    
                public void actionPerformed(ActionEvent e) {
                    //some stuff for saving whatewer programatically
                    dialog.setVisible(false);
                }
            });
            JButton btn1 = new JButton(" Ignore changes ");
            btn1.addActionListener(new ActionListener() {
    
                public void actionPerformed(ActionEvent e) {
                    dialog.setLocationRelativeTo(frame);
                    dialog.setVisible(false);
                }
            });
            dialog = new JDialog();
            dialog.add(btn);
            dialog.add(btn1);
            dialog.setVisible(false);
            dialog.setAlwaysOnTop(true);
            dialog.setModal(true);
            dialog.setLayout(new GridLayout(2, 0, 10, 10));
            JPanel pane = (JPanel) dialog.getContentPane();
            pane.setBorder(new EmptyBorder(10, 10, 10, 10));
            dialog.addWindowListener(closeListener);
            dialog.pack();
        }
    //
        private WindowListener exitListener = new WindowAdapter() {
    
            @Override
            public void windowClosing(WindowEvent e) {
                int confirm = JOptionPane.showOptionDialog(frame,
                        "Are You Sure to Close this Application?",
                        "Exit Confirmation", JOptionPane.YES_NO_OPTION,
                        JOptionPane.QUESTION_MESSAGE, null, null, null);
                if (confirm == 0) {
                    System.exit(1);
                }
            }
    
            @Override
            public void windowIconified(WindowEvent e) {
                int confirm = JOptionPane.showOptionDialog(frame,
                        "Are You Sure to Close this Application?",
                        "Exit Confirmation", JOptionPane.YES_NO_OPTION,
                        JOptionPane.QUESTION_MESSAGE, null, null, null);
                if (confirm == 0) {
                    //System.exit(1);
                }
            }
        };
    //
        private WindowListener closeListener = new WindowAdapter() {
    
            @Override
            public void windowClosing(WindowEvent e) {
                int confirm = JOptionPane.showOptionDialog(dialog,
                        "Are you want to save changes",
                        "Exit Confirmation", JOptionPane.YES_NO_OPTION,
                        JOptionPane.QUESTION_MESSAGE, null, null, null);
                if (confirm == 0) {
                    //some stuff for saving whatewer programatically
                    dialog.setVisible(true);
                } else if (confirm == 1) {// nothing only hide JDialog
                    dialog.setVisible(true);
                }
            }
        };
    
        private Action showingDialog() {
            return new AbstractAction("Show Dialog") {
    
                private static final long serialVersionUID = 1L;
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    Runnable doRun = new Runnable() {
    
                        @Override
                        public void run() {
                            dialog.setVisible(false);
                            location = frame.getLocationOnScreen();
                            int x = location.x;
                            int y = location.y;
                            //dialog.setLocation(x, y);
                            dialog.setLocationRelativeTo(frame);
                            dialog.setVisible(true);
                        }
                    };
                    SwingUtilities.invokeLater(doRun);
                }
            };
        }
    
        private class ExitListener implements ActionListener {
    
            @Override
            public void actionPerformed(ActionEvent e) {
                int confirm = JOptionPane.showOptionDialog(frame,
                        "Are You Sure to Close this Application?",
                        "Exit Confirmation", JOptionPane.YES_NO_OPTION,
                        JOptionPane.QUESTION_MESSAGE, null, null, null);
                if (confirm == 0) {
                    System.exit(1);
                }
            }
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
    
                @Override
                public void run() {
                    ClosingFrameDialog cf = new ClosingFrameDialog();
                }
            });
        }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Is there a way to set up a function that will get the user
Is there any way to set a cookie that is not readable on subdomains?
Is there any way to set the initial directory of a folder browser dialog
Is there a way to set the fonts when a Monotouch Dialog class has
Is there a way to set focus to an input textbox inside jquery dialog
Is there a way to use a jquery dialog modal instead of the javascript
Is there way to set @include mixin(); to variable? I tried this @mixin bg-gradient($fallback,
Is there a way to set the fetchmode to eager for more than one
Is there a way to set the .Text property of the Wpf ComboBox control
Is there any way to set a CSS class on an input item in

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.