Установите расположение JFileChooser - PullRequest
6 голосов
/ 16 февраля 2010

Как мы можем установить местоположение окна JFileChooser, я пробовал методы setLocation() и setBounds(), но это не работает.

Ответы [ 3 ]

9 голосов
/ 16 февраля 2010

К сожалению, нет тривиального способа сделать это, потому что всякий раз, когда вы показываете chooser, внутренний метод createDialog устанавливает местоположение в центр родительского элемента.

Один из способов сделать это - создать подкласс JFileChooser и переопределить метод createDialog следующим образом:

   static class MyChooser extends JFileChooser {
        protected JDialog createDialog(Component parent)
                throws HeadlessException {
            JDialog dlg = super.createDialog(parent);
            dlg.setLocation(20, 20);
            return dlg;
        }
    }

Теперь вы можете напрямую использовать MyChooser вместо JFileChooser. В приведенном выше коде я жестко запрограммировал местоположение на 20, 20, но вы можете установить его так, как хотите.

0 голосов
/ 08 июля 2015

Вы можете попытаться установить родительский элемент вашего JFileChooser на текущий JFrame / JPanel.

JFrame parentToBe = new JFrame();
JFileChooser chooser = new JFileChooser();
int pathSelection = chooser.showSaveDialog(parentToBe);

Это должно сработать.

Вы также можете посмотреть здесь для справки.

0 голосов
/ 16 февраля 2010

Из JavaDoc для JFileChooser showDialog выглядит так, как будто вы не обладаете достаточным контролем над положением диалога.

Родительский аргумент определяет две вещи: фрейм, от которого зависит открытое диалоговое окно, и компонент, положение которого внешний вид должен учитывать при размещении диалогового окна. Если родителем является объект Frame (такой как JFrame), то диалог зависит от рамки, а внешний вид позиционирует диалог относительно рамки (например, по центру рамки). Если родительский компонент является компонентом, то диалоговое окно зависит от фрейма, содержащего компонент, и располагается относительно компонента (например, по центру над компонентом). Если родительский элемент имеет значение NULL, то диалоговое окно зависит от отсутствия видимого окна, и оно находится в позиции, зависящей от внешнего вида, например в центре экрана.

...