小编Man*_*ain的帖子

java thread立即更新UI

我有一个javaFX应用程序可视化计算几何算法.算法的执行发生在另一个线程中,让我们调用它mainComputingThread.算法可以通过添加/删除/修改形状随时更新UI.所以代码看起来像:

//do some computaions (1)
updateUI();
//do some more calculations (2)
Run Code Online (Sandbox Code Playgroud)

我想知道的是在updateUI方法中立即更新UI并阻止调用线程进一步运行(标记为(2))直到UI更新完成.

我想到了布尔警卫.所以代码可能看起来像:

updateUI(){
   boolean guard = false;
   Platform.runLater(new Runnable()
   {
      run(){
        //do the actual update
        guard = true;
      }
   });
   while(guard==false);
}
Run Code Online (Sandbox Code Playgroud)

我希望你能明白我的意思.我真的好奇是否有更好的解决方案来解决这个问题...

java javafx

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

是否可以将 javaFX Pane 原点设置为左下角?

是否可以将 a 的原点设置Pane为左下角(而不是左上角)?我在画布上添加了许多在“数学坐标系”中定义的形状。

我认为也许有一种比总是从 y 坐标中减去高度更简单的方法。另一个优点是我不必负责调整窗格的大小。

java javafx

3
推荐指数
1
解决办法
3173
查看次数

Vue.js v-如果不对变量更改做出反应

我正在玩vue.js,并且在正确使用v-if方面有些挣扎。

我正在尝试在模板中进行条件模板渲染。在创建的方法中,将变量isloaded设置为true,这将导致重新渲染模板,并使“正在加载数据”消息消失。

但是,指示的日志显示,2s的延迟有效,因此可以实现回调,但是好像我没有正确更新数据变量。

我已经尝试了好几种方法,现在我将“ true / false”更改为字符串,以便更接近官方主页上给出的示例,但仍然没有成功。希望您能帮助我,在此先多谢。

请在下面找到有趣的代码片段:

var step1 = Vue.component('step1', {
  template: '#step1',
  data: function() {
    return {
      accounts: [],
      isloaded: 'false'
    }
  },
  created: function() {
    console.log("created");
    setTimeout(function() {
      console.log("times over");
      this.isloaded = 'true';
      this.accounts = [{
        id: 1234,
        name: "germany"
      }];
    }, 2000);
  },
  methods: {
    loaded: function() {
      console.log(this.isloaded === 'true');
      return this.isloaded === 'true';
    }
  }

})

new Vue({
  el: '#main'
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/vue@2.1.10/dist/vue.js"></script>
<template id="step1">
  <div class="step1">
    <h1>Welcome please choose your …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js

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

标签 统计

java ×2

javafx ×2

javascript ×1

vue.js ×1