Swing:如何在第一个setVisible()中将JFrame N像素放置在远离屏幕中心的位置?

siv*_*udh 3 swing jframe

在调用setVisible(true)之前,将JFrame N像素(例如x方向上300像素)放置在远离屏幕中心的代码是什么?

cla*_*taq 8

我通常会执行以下操作来使JFrame居中.您可以将偏移量添加到wdwLeft变量中,如列表中所示,以将框架移离中心.(调用setPreferredSize()是多余的,只有在那里才能使这个演示工作.)

package testapplication;

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;
import javax.swing.JFrame;

public class MyJFrame extends JFrame {

    MyJFrame() {
        super("Test");
        Dimension screenSize = new Dimension(Toolkit.getDefaultToolkit().getScreenSize());
        setPreferredSize(new Dimension(200, 200));
        Dimension windowSize = new Dimension(getPreferredSize());
        int wdwLeft = 300 + screenSize.width / 2 - windowSize.width / 2;
        int wdwTop = screenSize.height / 2 - windowSize.height / 2;
        pack();   
        setLocation(wdwLeft, wdwTop);
    }

    public static void main(final String [] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                final MyJFrame jf = new MyJFrame();
                jf.setVisible(true);
            }
        }
       );
    }
 }
Run Code Online (Sandbox Code Playgroud)

您可以添加其他逻辑,以确保偏移窗口仍然完全在屏幕内,如下所示getMaximumWindowBounds().