小编Ser*_*nev的帖子

如何正确地懒惰初始化地图的地图?

这可能是一种不好的做法,但我无法为我的问题找到更好的解决方案.所以我有这张地图

// Map<state, Map<transition, Map<property, value>>>
private Map<String, Map<String, Map<String, String>>> properties;
Run Code Online (Sandbox Code Playgroud)

我想初始化它,所以我不喜欢NullPointerException这个

properties.get("a").get("b").get("c");
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但我没有工作(显然)

properties = new HashMap<String, Map<String, Map<String,String>>>();
Run Code Online (Sandbox Code Playgroud)

我试过的其他东西没编译.

此外,如果您有任何想法如何避免这种嵌套地图,我将不胜感激.

java collections map

5
推荐指数
3
解决办法
5926
查看次数

在工具提示代码中无限触发两个鼠标事件的奇怪行为

我正在尝试使用javafx.stage.Popup.实现自定义工具提示.示例演示代码是:

public class PopupDemo extends Application {

    private Popup tooltip;
    private final SepiaTone sepiaTone = new SepiaTone();

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("PopupDemo");

        Label content = new Label();
        content.setStyle("-fx-background-color:#FCFBBD; -fx-padding: 5; -fx-border-color: #BFBD3B");

        tooltip = new Popup();
        tooltip.getContent().add(content);

        VBox vbox = new VBox(10);
        for (int i = 0; i < 5; i++) {
            final Label lbl = new Label("item " + i);
            lbl.setStyle("-fx-border-color:darkgray; -fx-background-color:lightgray");
            lbl.setMaxSize(80, 60);
            lbl.setMinSize(80, 60);
            lbl.setAlignment(Pos.CENTER); …
Run Code Online (Sandbox Code Playgroud)

java popup mouseevent javafx-2

5
推荐指数
1
解决办法
1134
查看次数

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

我有一个堆叠的窗格.当我向堆栈窗格添加第二个项目时,两个都显示,但我不能再点击我的第一个项目了.它变得"无法点击".

我在.setonmouse中定义的内容不起作用.它适用于我的第二个项目.如果我切换它们在堆栈窗格中的顺序,则另一个可以工作,但不能同时工作.

有没有解决这个问题?这是我的程序的样子:

我希望我的'网格'始终居中.左侧有一些按钮位于列的中间,稍后会有右侧的按钮,并且网格顶部会有按钮/文本,稍后会在边距中显示按钮/文本.

我希望一切都可以点击.

http://img688.imageshack.us/img688/6025/examplerg.png

java layout javafx pane javafx-2

5
推荐指数
1
解决办法
2942
查看次数

阻止/禁用JavaFX 2 WebView右键单击

我正在寻找一种方法来阻止/禁用javafx.scene.web.WebView中的右键单击.更具体地说,我不希望右键单击显示上下文菜单.我是这项技术的新手,无法找到实现这一目标的方法.

javafx webview javafx-2

5
推荐指数
2
解决办法
7974
查看次数

除了 javafx.beans.property 提供的机制之外,我是否应该在非 GUI 应用程序逻辑中使用其他内容?

过去,我不止一次实现了与 JavaFX 提供的类似的属性和侦听器。

由于我总是更喜欢使用广泛支持的包而不是我自己发明的东西,所以我很想在下一个项目中使用 JavaFX 属性,但在此之前,我想得到以下问题的答案。

在与 GUI 无关但会受益于更改侦听器以监视和控制系统状态的软件中,我是否仍然应该选择 JavaFX 提供的属性机制,或者是否有其他可用的东西适合我?...或者我还需要自己实现这个机制吗?

问候,弗雷德里克

java properties observable changelistener javafx-2

5
推荐指数
1
解决办法
297
查看次数

使用javafx SimpleMapProperty时出现UnsupportedOperationException

为什么以下代码抛出UnsupportedOperationException?

import javafx.beans.property.MapProperty;
import javafx.beans.property.SimpleMapProperty;


public class TestMapProperty {
    static MapProperty<String, String> model = new SimpleMapProperty<String, String>();


    public static void main(String[] args) {
        model.put("blue", "green"); // exception thrown here
    }
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractMap.put(AbstractMap.java:203)
    at javafx.beans.binding.MapExpression.put(MapExpression.java:277)
    at TestMapProperty.main(TestMapProperty.java:10)
Run Code Online (Sandbox Code Playgroud)

java javafx-2

5
推荐指数
2
解决办法
2973
查看次数

JavaFX - Media("File:// derp")以异常终止:MEDIA_INNACCESSIBLE

快速问题,男士们:

我试图在我的程序运行时运行一个简单的mp3,通过这个:

Media med = new Media("file://C:/Users/hariklia-elsa/workspace/PokerApp/src/intro.mp3");
MediaPlayer mPlayer = new MediaPlayer(med);
mPlayer.play();
Run Code Online (Sandbox Code Playgroud)

但我遇到了问题.运行程序以异常终止Exception in thread "main" MediaException: MEDIA_INACCESSIBLE : C,参考上面代码段的第一行,调用Media()构造函数.

我以前没有使用javafx或在代码中播放媒体的经验,有没有人知道为什么它会认为文件不可访问?我做错了什么吗?

该文件当然没问题.我可以在无数不同的媒体播放器中打开它,这很好.

java javafx media-player javafx-2

5
推荐指数
1
解决办法
3607
查看次数

从JavaFX程序为WebView执行Javascript函数

我试图从Java程序执行Javascript函数.Javascript函数获取HTML文件的内容并突出显示特定单词的出现.

是否可以从webview对象调用Javascript函数?

javascript java javafx javafx-2

5
推荐指数
1
解决办法
1万
查看次数

如何在java fx中每2秒更新一次标签框?

我正在尝试在应用程序GUI中模拟基本恒温器.

我想用新的温度值每2秒更新一个标签盒值.

例如,我的初始温度将显示为68度并更新为69,至70等,直到每2秒75次.

这是我用Java fx编写的一段代码. controlpanel是标签盒所在的te形式的对象.它仅将最终值更新为75.它不会每2秒更新一次.我写了一个方法暂停,导致2秒的延迟.所有标签都会更新其最终值,但不会每2秒更新一次.当我调试时,我可以看到值每2秒增加一个.此代码是在按钮onClick事件中编写的

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    int i=0;
    Timer asd = new Timer(1000,null);

    asd.setDelay(1000);

    while(i < 10)
    {
         jTextField1.setText(Integer.toString(i));
         i++;

         asd.start();
    }
 }  
Run Code Online (Sandbox Code Playgroud)

java swing javafx javafx-2

5
推荐指数
2
解决办法
2万
查看次数

从JavaFX Label中删除填充/边距

有没有办法删除JavaFX标签添加的默认空间(填充/边距)?我想摆脱下图中黑线之间显示的空间:

在此输入图像描述

源代码:

public class LabelTest extends Application
{

    @Override
    public void start(final Stage primaryStage)
    {
        final Group root = new Group();
        final Scene scene = new Scene(root, 300, 130, Color.WHITE);

        final GridPane gridpane = new GridPane();
        gridpane.setPadding(new Insets(5));
        gridpane.setHgap(10);
        gridpane.setVgap(10);

        final Label label = new Label("Label");
        label.setStyle("-fx-font-size:44px;-fx-font-weight: bold;-fx-text-fill:#5E34B1;-fx-background-color:#ffc300;");
        GridPane.setHalignment(label, HPos.CENTER);
        gridpane.add(label, 0, 0);

        root.getChildren().add(gridpane);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

css java javafx javafx-2 javafx-8

5
推荐指数
2
解决办法
9875
查看次数