我想知道如何使用JavaFX从Windows shell编译代码.
我有这个代码fxservidor.java:
public class Fxservidor extends Application {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
Synthetizer os = new Synthetizer("Ximena");
}
});
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试制作Windows PC Toast通知.现在我正在使用Swing和JavaFX的混合物,因为我找不到用FX制作未修饰窗口的方法.我更愿意只使用JavaFX.
那么,我怎样才能制作一个未修饰的窗户?
编辑:我发现你可以直接创建一个舞台new Stage(StageStyle.UNDECORATED).
现在我需要知道的是如何初始化工具包,以便我可以调用我的start(Stage stage)方法MyApplication.(哪个extends Application)
我通常会打电话Application.launch(MyApplication.class, null),但这会使我免于创建Stage和初始化Toolkit.
那么如何让这些东西start(new Stage(StageStyle.UNDECORATED))直接使用呢?
我一直试图通过使用以下鼠标监听器在屏幕上移动一个未修饰的阶段:
这些事件来自一个矩形.我的想法是移动未装饰的窗口,点击矩形并拖动所有窗口.
@FXML
protected void onRectanglePressed(MouseEvent event) {
X = primaryStage.getX() - event.getScreenX();
Y = primaryStage.getY() - event.getScreenY();
}
@FXML
protected void onRectangleReleased(MouseEvent event) {
primaryStage.setX(event.getScreenX());
primaryStage.setY(event.getScreenY());
}
@FXML
protected void onRectangleDragged(MouseEvent event) {
primaryStage.setX(event.getScreenX() + X);
primaryStage.setY(event.getScreenY() + Y);
}
我用这些事件得到的就是当我按下矩形并开始拖动窗口时,它会移动一点点.但是,当我释放按钮时,窗口移动到矩形所在的位置.
提前致谢.
如果我创建一个ListView:
new ListView<>(FXCollections.observableArrayList("1", "2", "3"))
Run Code Online (Sandbox Code Playgroud)
我希望它创建一个包含3行的ListView.但事实并非如此.它创建了一个大约17行的ListView.有没有办法告诉ListView始终是高度,以便其中的任何项目始终显示但没有空行?
拥有自动宽度也很有用,因此它总是与最宽的行一样宽.
这样做的一个目的是,它可以在ScrollPane中使用.我知道它有自己的滚动条,但它们没有提供足够的控制.
我有我的JavaFX 2.0应用程序,在用户单击ListView元素中的项目后,我需要做一些操作.要构建用户GUI我正在使用FXML,其中我有这样的东西:
<children>
<ListView fx:id="listView" GridPane.columnIndex="0"
GridPane.rowIndex="1" labelFor="$pane"
onPropertyChange="#handleListViewAction"/>
</children>
Run Code Online (Sandbox Code Playgroud)
这是我在控制器中为此事件所拥有的:
@FXML protected void handleListViewAction(ActionEvent event) {
System.out.println("OK");
}
Run Code Online (Sandbox Code Playgroud)
这是一个错误,我接受,当这个gui构建的场景:
javafx.fxml.LoadException: java.lang.String does not define a property model for "property".
at javafx.fxml.FXMLLoader$Element.processEventHandlerAttributes(Unknown Source)
at javafx.fxml.FXMLLoader$ValueElement.processEndElement(Unknown Source)
at javafx.fxml.FXMLLoader.processEndElement(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at javafx.fxml.FXMLLoader.load(Unknown Source)
at fxmlexample.FXMLExampleController.handleSubmitButtonAction(FXMLExampleController.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(Unknown Source)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown Source)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source) …Run Code Online (Sandbox Code Playgroud) 我正在制作JavaFX destop应用程序.我想删除默认的Windows边框,我也想自定义最小化,最大化和关闭的3个标准图标.
这种外观或定制的最初动机是新的卡巴斯基2012用户界面....我想设计类似的东西...... :)
什么是初始化JavaFX运行时的正确方法,以便您可以使用并发工具进行单元测试(使用JUnit)控制器Platform.runLater(Runnable)?
Application.launch(...)从该@BeforeClass方法调用会导致死锁.如果Application.launch(...)未调用,则抛出以下错误:
java.lang.IllegalStateException: Toolkit not initialized
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:121)
at com.sun.javafx.application.PlatformImpl.runLater(PlatformImpl.java:116)
at javafx.application.Platform.runLater(Platform.java:52)
at javafx.concurrent.Task.runLater(Task.java:1042)
at javafx.concurrent.Task.updateMessage(Task.java:987)
at com.xyz.AudioSegmentExtractor.call(AudioSegmentExtractor.java:64)
at com.xyz.CompletionControllerTest.setUp(CompletionControllerTest.java:69)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Run Code Online (Sandbox Code Playgroud)
跟进:这是我根据@SergeyGrinev推荐使用的主题.
... // Inside test class
public static …Run Code Online (Sandbox Code Playgroud) 我想调整窗口大小以适应窗口的内容.在Swing中有pack()方法.在JavaFX中有类似的方法吗?
我想要做的是创建一个确认对话框.当我创建对话框时,它比内容更宽,所以我问自己是否需要类似pack方法的东西.
以下是正在发生的事情的屏幕截图:

这是我的代码:
mainClass.getPrimaryStage().setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(final WindowEvent e) {
e.consume();
final Stage dialog = new Stage();
dialog.setTitle("Confirm Before Exit");
dialog.setResizable(false);
dialog.initOwner(mainClass.getPrimaryStage());
dialog.initModality(Modality.APPLICATION_MODAL);
FlowPane buttons = new FlowPane(10,10);
buttons.setAlignment(Pos.CENTER);
Button yes = new Button("Yes");
Button no = new Button("No");
buttons.getChildren().addAll(yes, no);
VBox box = new VBox();
box.setAlignment(Pos.CENTER);
box.setSpacing(10);
box.getChildren().addAll(new Label("Do you really want to exit?"), buttons);
yes.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
Platform.exit();
}
});
no.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void …Run Code Online (Sandbox Code Playgroud) 我试图像我提出的例子一样创建一个启动画面.似乎AnchorPane不允许透明背景,我已经尝试设置了AnchorPaneto 的css -fx-background-color: rgba(255,0,255,0.1) ;但白色背景仍然显示.
我在fxml文件中的所有内容都是带有ImageView的AnchorPane,其中包含png图像
我到处寻找,但找不到任何解决方案,任何帮助将不胜感激.谢谢
我一直在看一些博客和其他stackoverflow问题,我没有看到我的问题的直接答案.我正在创建一个javafx gui客户端,我希望我的菜单栏在一个fxml中是一个控制器,然后我希望内容区域是额外的fxml文件.登录屏幕将是一个fxml,登录屏幕将是应用程序的主要内容,并将在一个fxml中.我该怎么做呢?
我只是不想在同一个文件中拥有我的登录,菜单栏和主要内容的所有代码.这是我正在做的工作的图像:

javafx-2 ×10
java ×7
javafx ×5
fxml ×2
compilation ×1
controller ×1
java-ee ×1
junit ×1
listview ×1
stage ×1
swing ×1
toast ×1
transparency ×1
unit-testing ×1
windows ×1