Как мы можем установить местоположение JFileChooser
окно, я попробовал setLocation()
и setBounds()
методы, но это не делает работ.
К сожалению, нет тривиального способа сделать это, потому что всякий раз, когда вы показываете средство выбора, внутренний метод 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, но вы можете установить все, что захотите.
Из JavaDoc для JFileChooser
's showDialog
, похоже, что у вас нет большого контроля над тем, куда помещается диалог.
Аргумент parent определяет две вещи: фрейм, от которого зависит открытый диалог, и компонент, положение которого следует учитывать при размещении диалога. Если родителем является объект Frame (например, JFrame), то диалог зависит от фрейма, а внешний вид позиционирует диалог относительно фрейма (например, центрирует по фрейму). Если родителем является компонент, то диалог зависит от фрейма, содержащего компонент, и позиционируется относительно компонента (например, по центру над компонентом). Если родитель - null, то диалог не зависит от видимого окна и размещается в позиции, зависящей от внешнего вида и ощущений, например, в центре экрана.