Search code examples
javaswingjoptionpane

JOptionPane showInputDialog position


How can I specify the position of a JOptionPane. Can anyone make a class that extends JOptionPane.showInputDialog that also takes in an x,y position?


Solution

  • You can use JOptionPane's setLocation(...) method. OR Instead of using JOptionPane you can extends a JDialog, and then specify it's location on the screen.

    Here is one working code sample as adviced by @HovercraftFullOfEels , just this example will help you to get input from the user as you asked for :

    import javax.swing.*;
    
    public class OptionPaneLocation 
    {   
        private void createAndDisplayGUI()
        {       
            JOptionPane optionPane = new JOptionPane("Its me"
                                        , JOptionPane.PLAIN_MESSAGE
                                        , JOptionPane.DEFAULT_OPTION
                                        , null, null, "Please ENTER your NAME here");
            optionPane.setWantsInput(true);             
            JDialog dialog = optionPane.createDialog(null, "TEST");
            dialog.setLocation(10, 20);
            dialog.setVisible(true);
            System.out.println(optionPane.getInputValue());
        }
    
        public static void main(String... args)
        {
            Runnable runnable = new Runnable()
            {
                public void run()
                {
                    new OptionPaneLocation().createAndDisplayGUI();
                }
            };
            SwingUtilities.invokeLater(runnable);
        }
    }