ในสายตาของฉัน GUI ที่อยู่ตรงกลางของหน้าจอดูเหมือน .. "splash-screen'ish" ฉันรอให้พวกเขาหายไปและGUI ที่แท้จริงจะปรากฏ!
ตั้งแต่ Java 1.5 เราสามารถเข้าถึงWindow.setLocationByPlatform(boolean)
ไฟล์. ที่..
ตั้งค่าว่าหน้าต่างนี้ควรปรากฏที่ตำแหน่งเริ่มต้นสำหรับระบบหน้าต่างดั้งเดิมหรือที่ตำแหน่งปัจจุบัน (ส่งคืนโดย getLocation) ในครั้งถัดไปที่หน้าต่างจะปรากฏขึ้น ลักษณะการทำงานนี้คล้ายกับหน้าต่างดั้งเดิมที่แสดงโดยไม่ได้ตั้งค่าตำแหน่งที่ตั้งของโปรแกรม ระบบหน้าต่างส่วนใหญ่เรียงซ้อนหน้าต่างหากไม่ได้ตั้งค่าตำแหน่งไว้อย่างชัดเจน ตำแหน่งจริงจะถูกกำหนดเมื่อหน้าต่างแสดงบนหน้าจอ
ดูเอฟเฟกต์ของตัวอย่างนี้ที่ทำให้ 3 GUI อยู่ในตำแหน่งเริ่มต้นตามที่ OS เลือก - บน Windows 7, Linux พร้อม Gnome & Mac OS X
(3 ล็อต) 3 GUI ที่ซ้อนกันอย่างเรียบร้อย สิ่งนี้แสดงถึง 'เส้นทางแห่งความประหลาดใจน้อยที่สุด' สำหรับผู้ใช้เนื่องจากเป็นวิธีที่ระบบปฏิบัติการอาจวางตำแหน่ง 3 อินสแตนซ์ของโปรแกรมแก้ไขข้อความธรรมดาเริ่มต้น (หรืออย่างอื่นสำหรับเรื่องนั้น) ขอขอบคุณถังขยะสำหรับ Linux & Mac ภาพ
นี่คือรหัสง่ายๆที่ใช้:
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();
}
});
}
}