这可能是一种不好的做法,但我无法为我的问题找到更好的解决方案.所以我有这张地图
// 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)
我试过的其他东西没编译.
此外,如果您有任何想法如何避免这种嵌套地图,我将不胜感激.
我正在尝试使用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) 我有一个堆叠的窗格.当我向堆栈窗格添加第二个项目时,两个都显示,但我不能再点击我的第一个项目了.它变得"无法点击".
我在.setonmouse中定义的内容不起作用.它适用于我的第二个项目.如果我切换它们在堆栈窗格中的顺序,则另一个可以工作,但不能同时工作.
有没有解决这个问题?这是我的程序的样子:
我希望我的'网格'始终居中.左侧有一些按钮位于列的中间,稍后会有右侧的按钮,并且网格顶部会有按钮/文本,稍后会在边距中显示按钮/文本.
我希望一切都可以点击.
我正在寻找一种方法来阻止/禁用javafx.scene.web.WebView中的右键单击.更具体地说,我不希望右键单击显示上下文菜单.我是这项技术的新手,无法找到实现这一目标的方法.
过去,我不止一次实现了与 JavaFX 提供的类似的属性和侦听器。
由于我总是更喜欢使用广泛支持的包而不是我自己发明的东西,所以我很想在下一个项目中使用 JavaFX 属性,但在此之前,我想得到以下问题的答案。
在与 GUI 无关但会受益于更改侦听器以监视和控制系统状态的软件中,我是否仍然应该选择 JavaFX 提供的属性机制,或者是否有其他可用的东西适合我?...或者我还需要自己实现这个机制吗?
问候,弗雷德里克
为什么以下代码抛出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) 快速问题,男士们:
我试图在我的程序运行时运行一个简单的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程序执行Javascript函数.Javascript函数获取HTML文件的内容并突出显示特定单词的出现.
是否可以从webview对象调用Javascript函数?
我正在尝试在应用程序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) 有没有办法删除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) java ×9
javafx-2 ×9
javafx ×6
collections ×1
css ×1
javafx-8 ×1
javascript ×1
layout ×1
map ×1
media-player ×1
mouseevent ×1
observable ×1
pane ×1
popup ×1
properties ×1
swing ×1
webview ×1