使用 setLocation 在 Windows、Java 中移动 JFrame

Tom*_*m C 1 java swing jframe actionevent

我正在尝试JFrame使用 5 个按钮(北、东、南、西和中心)在 Windows 中移动,目前所有当前代码都已就位,并且在使用时可以正常工作;

public void actionPerformed(ActionEvent e)
{
    if(e.getSource()==northButton)
    {
       setLocation(500,500);
    }

} //works

public void actionPerformed(ActionEvent e)
{
    if(e.getSource()== northButton)
    {
       setLocation(north);
    }

} //doesn't work
Run Code Online (Sandbox Code Playgroud)

然而,作为任务的一部分,我需要使用 Java 工具包来计算getScreenSize宽度和高度,并使用计算来计算出屏幕的边界并将“北”发送到setLocation()(如上所示)。但是,使用此方法会引发错误,"No suitable method found"我不确定如何解决此问题。下面的计算代码目前仅适用于北向。

int screenWidth = Toolkit.getDefaultToolkit().getScreenSize().width;
int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;

int width = this.getWidth();
int height = this.getHeight();

int north = ((screenWidth - width)/2);
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。谢谢!

whi*_*der 5

这里您传递两个参数,X 和 Y:

setLocation(500,500);
Run Code Online (Sandbox Code Playgroud)

你正在经过一个,但它是哪一个呢?X还是Y?如果是 X,Y 在哪里?:

int north = ((screenWidth - width)/2);
setLocation(north);
Run Code Online (Sandbox Code Playgroud)

编译器告诉您它没有一种setLocation()采用一个参数的方法。它需要 2D 空间中的一个位置:即 XY。您可能想要的是:

setLocation(north, 0);
Run Code Online (Sandbox Code Playgroud)