JavaFX:在一个方法中创建并在另一个类中使用的对象?
从理论上讲,我对Java并不陌生,但我是一个初学者。 我正在试验JavaFX:在一个方法中创建并在另一个类中使用的对象?,java,javafx-2,Java,Javafx 2,从理论上讲,我对Java并不陌生,但我是一个初学者。 我正在试验JavaFX,首先,我正在实现一个GUI,其中窗口(Stage)具有屏幕的大小 问题:我想使用这个屏幕大小对象,它是矩形的类型,在另一个类中命名为屏幕边框(称为第二个)。 以下是我的简单代码: public class Test extends Application { public static void main(String[] args) { launch(args);} public sta
JavaFX
,首先,我正在实现一个GUI
,其中窗口(Stage
)具有屏幕的大小
问题:我想使用这个屏幕大小对象
,它是矩形
的类型,在另一个类中命名为屏幕边框
(称为第二个
)。
以下是我的简单代码:
public class Test extends Application
{
public static void main(String[] args)
{ launch(args);}
public static Rectangle screenBorders;
@Override
public void start(Stage primaryStage)
{
Group grp=new Group();
Scene sc = new Scene(grp);
primaryStage.setScene(sc);
primaryStage.show();
screenBorders= new Rectangle (
Screen.getPrimary().getBounds().getWidth(),
Screen.getPrimary().getBounds().getHeight()
);
Second second= new Second();
}
}
新文件、新类
class Second extends Group
{
public Second ()
{
Rectangle second =new Rectangle(screenBorders.getWidth(), screenBorders.getHeight());
}
//code, code, code, don't know yet what code i will put...
}
在第二个类中,我无法捕获/使用第一个类中定义的screensize
。(我想使用screenBorders
)
我试图在名为Test
的第一个主类中使用public
和static
关键字声明screenBorders
,认为它可以在我的包中的任何地方使用,但它不起作用
有人知道如何将对象与其他类链接吗?试试
Stage.setFullScreen(true)
,文档是。如果您想从第二个类访问静态变量,您需要直接声明第一个类名:
Rectangle second = new Rectangle(
Test.screenBorders.getWidth(),
Test.screenBorders.getHeight());
或在第二个
类的开头使用导入静态:
import static Test.*;
“但它不起作用”您能告诉我您遇到了什么问题或错误。它说“找不到符号”错误,但已通过导入静态解决,如下所示。thksuser2305415,我应该补充一点,这个解决方案可能不是你想要的,因为,如果舞台的大小发生变化,你将不会得到通知。因此,不要使矩形静态可用,而是尝试使Screen.getPrimary().boundsProperty()静态可用,并将smth绑定到bounds属性()的widthProperty()和heightProperty()。@Sergey Grinev我使用了第二种方法“导入静态测试。*;”;它可以工作!!!谢谢!!:)@AlexanderKirov不太明白其中的区别,但也许我得试试你的房子方法:)我不知道你的应用程序,但不同的是,当你创建一个矩形时,它会有固定的值,就像在初始化时一样。但是当你使用属性和绑定时,你可以随时访问最新和最实际的值。@AlexanderKirov Humm我明白了。所以有kind有两种情况:1-如果矩形的尺寸必须在整个应用程序中保持相同,因此不需要像您所说的那样使用任何属性和绑定。2-如果矩形必须在整个应用程序中动态更改,那么对属性绑定肯定是必要的。在我的情况下,我希望矩形保持完全相同的尺寸在整个应用程序中都是一样的,所以我认为情况1更合适。我已经尝试过setFullScreen()函数,它可以很好地设置全屏模式下的窗口,但是有一种弹出消息说,您可以使用esc按钮退出模式,而这并不真正适合我的应用程序。