Java 为什么不是';我的程序没有使用变量吗?
我正在尝试制作一个面向对象的JavaFX程序,但我遇到了一个似乎无法解决的问题,基本上窗口变量都设置好了,当我将它们打印到控制台时,它们都设置好了。然而,当我在start方法中使用它们时,它似乎并不承认它们存在 主要类别:Java 为什么不是';我的程序没有使用变量吗?,java,javafx,Java,Javafx,我正在尝试制作一个面向对象的JavaFX程序,但我遇到了一个似乎无法解决的问题,基本上窗口变量都设置好了,当我将它们打印到控制台时,它们都设置好了。然而,当我在start方法中使用它们时,它似乎并不承认它们存在 主要类别: import com.mersey.ui.Window; public class Main { public static void main(String[] args) { Window win = new Window();
import com.mersey.ui.Window;
public class Main
{
public static void main(String[] args)
{
Window win = new Window();
win.Create("Mersey", 980, 640, false);
Window.launch(Window.class, args);
}
}
窗口类:
package com.mersey.ui;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
public class Window extends Application
{
protected Stage WindowStage;
protected Pane WindowRoot;
protected Scene WindowScene;
protected String WindowTitle;
protected int WindowWidth;
protected int WindowHeight;
protected boolean WindowResizable;
public void Create(String title, int width, int height, boolean resizable)
{
WindowTitle = title;
WindowWidth = width;
WindowHeight = height;
WindowResizable = resizable;
/*
System.out.print(WindowTitle+"\n");
System.out.print(WindowWidth+"\n");
System.out.print(WindowHeight+"\n");
System.out.print(WindowResizable);*/
}
@Override
public void start(Stage stage) throws Exception
{
WindowStage = stage;
WindowRoot = new Pane();
WindowScene = new Scene(WindowRoot, WindowWidth, WindowHeight);
WindowStage.setScene(WindowScene);
WindowStage.setTitle(WindowTitle);
WindowStage.setWidth(WindowWidth);
WindowStage.setHeight(WindowHeight);
WindowStage.setMinWidth(WindowWidth);
WindowStage.setMinHeight(WindowHeight);
WindowStage.setResizable(WindowResizable);
WindowStage.show();
}
}
我认为*您在这里要做的不是构造Window对象,然后按现在的方式调用Window.launch,而是通过传递到Window.launch中的字符串[]args将宽度和高度的值漏斗化。文档中说,您可以通过getParameters()检索这些值,因此看起来像这样:
//in main
String[] launchArgs = new String[] {"Width=800", "Height=600"};
Window.launch(Window.class, launchArgs);
..........................
//in start(Stage)
String[] args = getParameters();
for (String s : args) {
if (s.contains("Width")) {
//parse and set the window width here
}
}
请参见:,java.lang.String…)
当然,这假设您希望能够从main中为这些类字段提供任意值。如果没有,我只需要硬编码一个默认值,或者从start(Stage)方法的配置中提取它们。旁注-以小写字母开始命名变量。类似于
windowRoot
或windowWidth
。我认为它可能与以下行有关:Window.launch(Window.class,args);我不知道您正在使用的api,但这似乎并没有将您创建并调用Create()的窗口实例传递到Window.launch方法,这意味着它可能会启动一个新创建的实例,而不是您构建的实例。好的,谢谢您的帮助,我现在来看看。