Trước mắt tôi, một GUI ở giữa màn hình trông rất .. "màn hình giật gân". Tôi tiếp tục chờ đợi chúng biến mất và GUI thực sự xuất hiện!
Kể từ Java 1.5, chúng tôi đã có quyền truy cập Window.setLocationByPlatform(boolean)
. mà ..
Đặt xem Cửa sổ này sẽ xuất hiện ở vị trí mặc định cho hệ thống cửa sổ gốc hoặc tại vị trí hiện tại (được trả về bởi getLocation) vào lần tiếp theo Cửa sổ được hiển thị. Hành vi này giống như một cửa sổ gốc được hiển thị mà không lập trình vị trí của nó. Hầu hết các hệ thống cửa sổ xếp tầng cửa sổ nếu vị trí của chúng không được đặt rõ ràng. Vị trí thực tế được xác định khi cửa sổ được hiển thị trên màn hình.
Hãy xem hiệu ứng của ví dụ này để đặt 3 GUI vào các vị trí mặc định mà HĐH đã chọn - trên Windows 7, Linux với Gnome & Mac OS X.
(3 rất nhiều) 3 GUI được xếp ngay ngắn. Điều này thể hiện 'đường dẫn ít bất ngờ nhất' cho người dùng cuối, vì đó là cách hệ điều hành có thể định vị 3 trường hợp của trình soạn thảo văn bản thuần mặc định (hoặc bất cứ điều gì khác, cho vấn đề đó). Tôi cảm ơn thùng rác cho Linux và Mac. hình ảnh.
Đây là mã đơn giản được sử dụng:
import javax.swing.*;
class WhereToPutTheGui {
public static void initGui() {
for (int ii=1; ii<4; ii++) {
JFrame f = new JFrame("Frame " + ii);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
String s =
"os.name: " + System.getProperty("os.name") +
"\nos.version: " + System.getProperty("os.version");
f.add(new JTextArea(s,3,28)); // suggest a size
f.pack();
// Let the OS handle the positioning!
f.setLocationByPlatform(true);
f.setVisible(true);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch (Exception useDefault) {}
initGui();
}
});
}
}