Discussions
Categories
- 385.5K All Categories
- 4.9K Data
- 2.5K Big Data Appliance
- 2.4K Data Science
- 453.4K Databases
- 223.2K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 47 Multilingual Engine
- 606 MySQL Community Space
- 486 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.2K ORDS, SODA & JSON in the Database
- 585 SQLcl
- 4K SQL Developer Data Modeler
- 188K SQL & PL/SQL
- 21.5K SQL Developer
- 46 Data Integration
- 46 GoldenGate
- 298.4K Development
- 4 Application Development
- 20 Developer Projects
- 166 Programming Languages
- 295K Development Tools
- 150 DevOps
- 3.1K QA/Testing
- 646.7K Java
- 37 Java Learning Subscription
- 37.1K Database Connectivity
- 201 Java Community Process
- 108 Java 25
- 22.2K Java APIs
- 138.3K Java Development Tools
- 165.4K Java EE (Java Enterprise Edition)
- 22 Java Essentials
- 176 Java 8 Questions
- 86K Java Programming
- 82 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 208 Java User Groups
- 25 JavaScript - Nashorn
- Programs
- 667 LiveLabs
- 41 Workshops
- 10.3K Software
- 6.7K Berkeley DB Family
- 3.6K JHeadstart
- 6K Other Languages
- 2.3K Chinese
- 207 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 474 Portuguese
why can't I set location of FileDialog?

ilantal
Member Posts: 164
I have the following code:
FileDialog dlg = new FileDialog(parent, "Save MIP", FileDialog.SAVE);
dlg.setLocationRelativeTo(parent);
dlg.setVisible(true);
I can see under the debugger that dlg has a location of 0,0 before setLocationRelativeTo(parent) and afterwards has a location which looks reasonable to me. Still when I call setVisible, the dialog appears at 0,0. Any explanations or ideas what can be done?
Thanks,
Ilan
FileDialog dlg = new FileDialog(parent, "Save MIP", FileDialog.SAVE);
dlg.setLocationRelativeTo(parent);
dlg.setVisible(true);
I can see under the debugger that dlg has a location of 0,0 before setLocationRelativeTo(parent) and afterwards has a location which looks reasonable to me. Still when I call setVisible, the dialog appears at 0,0. Any explanations or ideas what can be done?
Thanks,
Ilan
Tagged:
Answers
-
Moderator action: Moved from Swing
db -
You need to update graphics before making visible.
dlg.update(dlg.getGraphics());
Here is an example:import javax.swing.*; import java.awt.*; public class Main { public static void main(String[] args) { Frame frame = new Frame(); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class Frame extends JFrame { public Frame() { setLocation(200,100); setTitle("My Frame"); setSize(300,300); FileDialog dlg = new FileDialog(this, "Save MIP", FileDialog.SAVE); dlg.setLocation(this.getLocation()); dlg.update(dlg.getGraphics()); dlg.setVisible(true); } }
-
827028 wrote:Sorry, but this is absolutely incorrect. Look up the Javadoc for Container#update() and Component#update() to see what that method does. It has nothing to do with positioning a dialog.
You need to update graphics before making visible.
dlg.update(dlg.getGraphics());
The likely reason the setLocationXXX() methods don't work with a FileDialog is because it's a truly "native" window, and is free to ignore your suggestions and behave as the OS sees fit. Here's a snippet from the java.awt.Window class Javadoc:
>
Note: the location and size of top-level windows (including Windows, Frames, and Dialogs) are under the control of the desktop's window management system. Calls to setLocation, setSize, and setBounds are requests (not directives) which are forwarded to the window management system. Every effort will be made to honor such requests. However, in some cases the window management system may ignore such requests, or modify the requested geometry in order to place and size the Window in a way that more closely matches the desktop settings.
This discussion has been closed.