Tag: javafx

JavaFX全屏独占模式

我正在制作一个JavaFX自助服务终端应用程序,需要完全控制屏幕并禁止关闭,最小化和某些按键。 我想知道有没有办法让JavaFX应用程序以全屏独占模式运行,如果没有,有任何替代方案可以实现相同的目标。 我试过用过: stage.setFullScreen(true); 它成功地使应用程序全屏,但用户仍然可以退出应用程序或退出全屏。

JavaFX fxml – 如何将Spring DI与嵌套的自定义控件一起使用?

我已经完成了一些关于将Spring DI与Jav​​aFx集成的教程,但我已经碰到了一个简单的例子没有涉及的墙(我无法弄清楚)。 我想要在视图层和表示层之间进行清晰的分离。 我想使用fxml定义可组合视图,使用Spring将它们连接在一起。 这是一个具体的例子: Dashboard.fxml: Main.java: public void start(Stage primaryStage) throws Exception{ try { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppFactory.class); SpringFxmlLoader loader = context.getBean(SpringFxmlLoader.class); primaryStage.setScene(new Scene((Parent)loader.load(“/views/dashboard.fxml”))); primaryStage.setTitle(“Hello World”); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } SpringFxmlLoader.java: public class SpringFxmlLoader { @Autowired ApplicationContext context; public Object load(String url) { try { FXMLLoader loader = new […]

正确使用JavaFX任务执行multithreading和线程池

我有一个选项,用户可以从FileChooser提交多个文件,以便由某些代码处理。 结果将是用于读取文件的IO,然后是对存储数据的实际繁重计算。 允许用户选择多个文件,并且由于文件处理不依赖于所选择的任何其他文件,因此使用线程更容易处理此问题。 此外,用户需要有一个按钮列表,每个要取消的任务一个,以及“全部取消”按钮。 因此,我必须考虑选择性地或集体地杀死一个或所有任务的能力。 最后一个要求是我不会让用户通过打开大量文件来阻塞系统。 因此,我想到了一个线程池数量有限的线程池(让我们假设我将它限制为4,任意数字)。 我不确定如何正确地设置这一切。 我有我需要做的逻辑,但使用正确的类是我被困住的地方。 我已经检查了这个资源 ,所以如果答案是某种方式,那么我就误读了这篇文章。 是否有任何JavaFX类可以帮助我解决这种情况? 如果没有,我如何将任务与某种线程池混合? 我是否必须创建自己的线程池,或者是否已经为我提供了一个? 我是否要在包含我愿意允许用户的最大线程数的某个地方创建单身? 我更喜欢使用已经在Java库中的一个,因为我不是multithreading专家,我担心我可能做错了。 由于线程错误似乎是地球上调试的最邪恶的东西,我正在努力确保尽可能正确地做到这一点。 如果没有办法做到这一点,我必须推出自己的实现,那么最好的方法是什么? 编辑:我应该注意,我通常是线程的新手,我之前使用过它们并且我正在阅读它们,但这将是我第一次使用它们,我真的很想做到这一点。

将第二个项目添加到我的堆栈窗格时,第一个项目将丢失其Event / MouseOn。 为什么? 我该怎么办? JavaFX的

我有一个堆叠的窗格。 当我向堆栈窗格添加第二个项目时,两个都显示,但我不能再点击我的第一个项目了。 它变得“无法点击”。 我在.setonmouse中定义的内容不起作用。 它适用于我的第二个项目。 如果我切换它们在堆栈窗格中的顺序,则另一个可以工作,但不能同时工作。 有没有解决这个问题? 这是我的程序的样子: 我希望我的’网格’始终居中。 左侧有一些按钮位于列的中间,稍后会有右侧的按钮,网格顶部会有按钮/文本,稍后会在边距中显示按钮/文本。 我希望一切都可以点击。 http://img688.imageshack.us/img688/6025/examplerg.png

JavaFx如何在tableview中只对齐一个列标题?

如何在tableview中只对齐一列的标题? 以下css对齐所有列标题,但我想只对齐一列: .table-view .column-header .label{ -fx-alignment:CENTER }

JavaFX更新textArea

我有一个简单的JavaFX应用程序,它有一个TextArea。 我可以使用start()方法中的以下代码更新textArea的内容: new Thread(new Runnable() { public void run() { for (int i = 0; i < 2000; i++) { Platform.runLater(new Runnable() { public void run() { txtarea.appendText("text\n"); } }); } } }).start(); 代码只是将text字符串写入TextArea 2000次。 我想从一个在start()方法之外实现的函数更新此textArea。 public void appendText(String p){ txtarea.appendText(p); } 可以从使用JavaFX应用程序更新TextArea的任意程序调用此函数。 我怎样才能在appendText函数中执行此操作?

是否可以在JavaFX中将CanView放在Canvas上?

我是javafx的新手。 我正在开发一个应用程序,其中我有一个canvas,我已经在其中绘制了几个图像。 我想在我的canvas上添加一个ImageView并在点击ImageView时实现一个弹出窗口? 是否有任何可能有或没有ImageView (按钮或任何控件?)或是否限制使用canvas上的控件? 我需要一些建议。

如何使用id在JavaFx中获取元素?

我是FXML的新手,我正在尝试使用switch为所有按钮点击创建一个处理程序。 但是,为了做到这一点,我需要使用和id获取元素。 我尝试了以下但由于某种原因(可能是因为我在控制器类中而不是在主节点上)我得到了堆栈溢出exception。 public class ViewController { public Button exitBtn; public ViewController() throws IOException { Parent root = FXMLLoader.load(getClass().getResource(“mainWindow.fxml”)); Scene scene = new Scene(root); exitBtn = (Button) scene.lookup(“#exitBtn”); } } 那么我如何使用它的id作为参考获得一个元素(例如一个按钮)? 该按钮的fxml块是:

在javafx中加载多个fxml

我一直在寻找一段时间,但我无法得到我想做的事情。 我一直在使用javafx框架在javafx中切换fxml这个post’ 在同一个场景中加载新的fxml ‘并取得了一些成功。 我的意思是,我有一个主窗口,这个窗口有两个不同的区域,MAIN区域和CONTENT区域。 MAIN区域在整个应用程序中保持不变,但CONTENT区域将不断变化。 我的MAIN区域只有一个工具栏,根据您单击的工具栏中的哪个按钮,CONTENT区域中的fxml(和行为)将发生变化。 我已经有了这种行为,它就像使用该框架的魅力一样。 问题是,我希望我的所有内容区域也可以拥有自己的主要区域,以及自己的内容区域。 并且取决于您在第二个MAIN区域中执行的操作,fxml和第二个CONTENT区域中的行为也会发生变化。 我不知道我使用的框架是否足够,如果我能够得到我想用它做的事情。 你知道另一个不同的框架可以帮助我获得这个function吗? 非常感谢提前!

从JavaFX TableView一次删除多行的问题

我正在尝试创建一个按钮,当选择TableView中的多行时,将删除所有选定的行。 我正在使用getSelectedIndicies创建一个可观察的列表,但它无法正常工作。 如果我选择前三行,我会打印出指示,因为它会删除它们并打印0,1然后它会删除第一行和第三行,但三行的中间不会被删除。 delBtn.setOnAction(new EventHandler() { @Override public void handle(ActionEvent e) { ObservableList index = table.getSelectionModel().getSelectedIndices(); for (int location: index) { System.out.println(location); data.remove(location); } table.getSelectionModel().clearSelection(); } });