Позиция JOptionPane showInputDialog

Как я могу указать позицию JOptionPane. Может ли кто-нибудь создать класс, расширяющий JOptionPane.showInputDialog, который также принимает позицию x, y?


person CodeGuy    schedule 21.03.2012    source источник
comment
Я не думаю, что это возможно.   -  person Mob    schedule 21.03.2012
comment
Почему позиция по умолчанию относительно родительского компонента неприемлема?   -  person Andrew Thompson    schedule 21.03.2012
comment
+1, вопрос сегодня добавил кое-что к моим знаниям :-)   -  person nIcE cOw    schedule 21.03.2012


Ответы (2)


Вы можете использовать JOptionPane. метод setLocation(...). ИЛИ Вместо использования JOptionPane вы можете расширить JDialog, а затем укажите его расположение на экране.

Вот один пример рабочего кода, рекомендованный @HovercraftFullOfEels, только этот пример поможет вам получить ввод от пользователя, как вы просили:

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);
    }
}
person nIcE cOw    schedule 21.03.2012
comment
Разве в JDialog по умолчанию ничего нет? - person Perry Monschau; 21.03.2012
comment
Да, это правда, но это может дать функциональность, эквивалентную JOptionPane, иначе вы можете использовать метод setLocation(...) для экземпляра JOptionPane, как указано в моем ответе. - person nIcE cOw; 21.03.2012
comment
@Downvoter: Не поленитесь поделиться своей мудростью по теме для отрицательного голоса. Буду очень признателен за то, что узнал что-то новое, если что-то не так в моем объяснении :-) - person nIcE cOw; 05.11.2014

JOptionPane можно легко превратить в JDialog (см. JOptionPane API, и он покажет вам, как это сделать на примере). Затем вы можете установить позицию созданного JDialog.

например, из документации:

 JOptionPane pane = new JOptionPane(arguments);
 pane.set.Xxxx(...); // Configure
 JDialog dialog = pane.createDialog(parentComponent, title);
 dialog.setLocation(....);  // added!
 dialog.setModal(....);  // added! Do you want it modal or not?
 // ....
 dialog.setVisible(true);
person Hovercraft Full Of Eels    schedule 21.03.2012