我想在JavaFX应用程序中更新Label,以便在方法运行时文本会多次更改:
private void analyze(){
labelString.setValue("Analyzing"); // (labelString is bound to the Label during initialization)
// <Some time consuming task here>
labelString.setValue("Analysis complete!");
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,标签在任务完成之前不会更新,只是显示之前的任何内容,直到analyze()方法返回.
如何强制更新标签,以便在开头显示"分析",然后"分析完成!" 任务完成后?
我正在开发一个应用程序,其中我有一些链接添加到Listview,这些链接将继续在运行时添加某些条件.所以我找不到的是如何在单击特定链接时打开URL的方法.
这是将链接添加到列表视图的代码
if(counter==1)
{
Task task2 = new Task<Void>() {
@Override
public Void call() throws Exception {
Platform.runLater(new Runnable() {
public void run() {
link=new Hyperlink(val);
link.setStyle("-fx-border-style: none;");
items.add(link);
listview.setItems(items);
}
});
return null;
}
};
Thread th = new Thread(task2);
th.setDaemon(true);
th.start();
Thread.sleep(1000);
}
Run Code Online (Sandbox Code Playgroud)
我知道我需要使用这样的东西在浏览器中点击链接时打开一个网址
getHostServices().showDocument(link.getText());
Run Code Online (Sandbox Code Playgroud)
但我不知道如何监听/跟踪不同链接的点击事件
我正在尝试添加一个带有fxml的新选项卡
我正在尝试这段代码:
Tab sd=new Tab("Customeradd");
sd.setContent(Source.sourceFor("","Customeradd.fxml"));
tabpanel.getTabs().add(sd);
Run Code Online (Sandbox Code Playgroud)
我在网上得到语法错误 sd.setContent(Source.sourceFor("","Customeradd.fxml"));,tabpanel是我的TabPane.
错误看起来像

请帮帮我
我想显示一个包含文本/标签的矩形.为此,我创建了一个堆栈窗格,并为其添加了一个矩形和一个标签.但是文本/标签未正确居中.它位于矩形之外(左侧).这是我目前使用的代码:
createRectangle(String name) {
pane = new StackPane();
text = new Label(name);
rect = new Rectangle();
// bind rectangle width to text width and add 10
rect.widthProperty().bind(text.widthProperty().add(10));
rect.heightProperty().bind(text.heightProperty().add(10));
// add to stackpane
pane.getChildren().addAll(rect,text);
// display stackpane
getChildren().add(pane)
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试绑定矩形的xProperty()和yProperty(),更改stackpane(setAlignment(Pos.CENTER))和其他东西的对齐方式,但没有成功.
当我使用固定的矩形大小(例如新的矩形(30,30))并且不使用绑定时,标签在矩形内正确居中.但是,矩形的大小需要根据标签大小进行调整:
// label is placed correctly in the center of the rectangle
createRectangle(String name) {
pane = new StackPane();
text = new Label(name);
rect = new Rectangle(30,30);
// add to stackpane
pane.getChildren().addAll(rect,text);
// display stackpane
getChildren().add(pane)
}
Run Code Online (Sandbox Code Playgroud) 我需要写一个javafx.scene.canvas.Canvas到javafx.scene.image.WritableImage.我知道snapshot()方法javafx.scene.Node将执行此操作,并且当我在JavaFX应用程序线程上时,它工作得很好.
但我需要从使用该javafx.concurrent包的工作线程执行此写操作.所以我javafx.concurrent.Task<V>试图snapshot()从它的call()方法中调用该方法.尝试执行此操作时,线程在调用时会冻结snapshot().
所以我的问题是我是否允许snapshot()从工作线程中调用利用javafx.concurrent包的?
如何在FXML中定义表格,然后使用我的JavaFX代码在运行时动态填充它?
我正在尝试向我的JavaFX 2应用程序添加一个Icon,但我找到的方法似乎不起作用.
Image icon = new Image(getClass().getResourceAsStream("/images/icon.png"));
stage.getIcons().add(icon);
Run Code Online (Sandbox Code Playgroud)
图标大小为32x32.
当我尝试
Image icon = new Image("http://goo.gl/kYEQl");
Run Code Online (Sandbox Code Playgroud)
它在Netbeans和可运行的jar中都有效.
我希望这可以解决.
我想删除分页控件的Selected页面标签(见下图).
在深入了解caspian.css后,我无法找到任何关于如何做到这一点的线索.通过代码我也没有找到任何方法来删除(或最终隐藏)此标签.
有没有办法在JavaFX中实现这一点而无需重新实现整个控件?

我有一个JavaFX 2桌面应用程序.我使用javafx-maven-plugin和Inno Setup为Windows创建了一个本机包(.exe安装程序).
当我在Windows Server 2008上安装应用程序时,由于堆大小较小,因此出现内存不足异常.
在这种情况下,如何传递JVM参数以增加堆大小(-Xmx)?
在使用Inno Setup创建本机包时,是否有任何方法可以调用jvm参数?
我有一个FXML文件,我用它来允许用户输入请求.现在我只是把它放在一个新的阶段并且做到了Stage.show().我不希望它出现在一个新窗口中,表现得更像一个ContextMenu.
看看ContextMenu课程,似乎我不能根据FXML文件设置内容.有没有办法用ContextMenu或者Popup或其他一些我不知道的类来做到这一点?