小编Sel*_*lim的帖子

在javafx中显示工具提示会将其舞台置于前台

我正在尝试解决jdk中的这个错误:http://bugs.java.com/bugdatabase/view_bug.do? video_id = 8088624

public class Blubb extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        Button btn = new Button("Click");
        btn.setTooltip(new Tooltip("Blubb"));

        Scene scene = new Scene(new BorderPane(btn), 320, 240);
        primaryStage.setScene(scene);
        primaryStage.show();

        Stage secondStage = new Stage();
        secondStage.setScene(new Scene(new BorderPane(new Button("Click")), 320, 240));
        //secondStage.initOwner(primaryStage);
        secondStage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果主舞台上的按钮悬停,它将出现在第二阶段的前面.我发现调用initOwner()一个舞台将消除这种行为.

现在我的问题是:我有多个"弹出窗口",它们有一个共同的所有者(主要阶段).将鼠标悬停在主阶段上的控件上后,在initOwner()解决方法后不会导致任何意外行为.然而,如果您将鼠标悬停在弹出窗口中的控件上而另一个弹出窗口处于焦点位置,则悬停的弹出窗口将会隐藏焦点.

有没有办法可以解决这个错误,不仅是初级阶段,还有弹出窗口?

更新:结果我的解决方法有不良副作用.舞台状态的Javadocs如下:

舞台将始终位于其父窗口的顶部.

另外,什么是一种解决方法,使弹出窗口不"总是在顶部"和最小化?

java javafx

15
推荐指数
1
解决办法
815
查看次数

在从模板元素创建的元素上设置id

我有一个模板元素,用于<li>在我的页面上创建-Elements.我可以设置该模板的内部元素的textContent属性.但是我无法在模板中设置父元素的id.

<template id="list-item">
  <li class="list-group-item">
    <div class="media-body">
      <strong class="list-item-text"></strong>
      <p class="list-item-text"></p>
    </div>
  </li>
</template>

<div id="output"></div>
Run Code Online (Sandbox Code Playgroud)

这是证明问题的必要条件.

var template = document.querySelector('#list-item');
var listItem = document.importNode(template.content, true);
var lines = listItem.querySelectorAll('.list-item-text');

lines[0].textContent = 'title';
lines[1].textContent = 'description';
listItem.id = 5;

document.querySelector('#output').appendChild(listItem);
Run Code Online (Sandbox Code Playgroud)

文本内容将被正确设置,但id根本不会被设置(js属性被创建,但它不会出现在DOM中.

我也为此创建了一个jsfiddle.

如何设置新添加元素的id?我目前的方法是避免使用模板,并使用字符串来构造元素,这让我觉得很脏.

html javascript html5

9
推荐指数
1
解决办法
882
查看次数

在java 9中查询交换空间

由于我使用的sigar库版本中的错误(返回swap的伪值),我尝试使用com.sun.management.OperatingSystemMXBean.这很好,给了我想要的结果(在Windows上).

Class<?> sunMxBeanClass = Class.forName("com.sun.management.OperatingSystemMXBean");
sunMxBeanInstance = sunMxBeanClass.cast(ManagementFactory.getOperatingSystemMXBean());
getFreeSwapSpaceSize = getMethodWithName(sunMxBeanClass, "getFreeSwapSpaceSize");
getTotalSwapSpaceSize = getMethodWithName(sunMxBeanClass, "getTotalSwapSpaceSize");
Run Code Online (Sandbox Code Playgroud)

然而,这打破了java 9.还有另一种方法来使用java查询交换文件/分区信息吗?我不想介绍一个新的库或版本的sigar.

跨平台解决方案受到赞赏,但Windows足够了: - )

谢谢

java telemetry java-9

7
推荐指数
2
解决办法
214
查看次数

Java按日期保存对象

我试图将对象保存到下面的类的文件,但它给了我java.io.NotSerializableException.

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Calendar;

class Saver {

  Calendar cal = Calendar.getInstance();

  public void save(ArrayList<Product> products) {
    for (int i = 0; i < products.size(); i++) {
      try { 
        FileOutputStream saveFile = new FileOutputStream(
        "/" + products.get(i) + ".product"
        );

        ObjectOutputStream oos = new ObjectOutputStream(saveFile);
        oos.writeObject(products.get(i));
      } catch(Exception ex) {
        System.out.println(ex); 
      }
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

而产品类看起来像这样:

class Product {

  private String title;
  private int id;
  private double price;

  public Product(String title, int id, double price) { …
Run Code Online (Sandbox Code Playgroud)

java io file-io exception object

0
推荐指数
1
解决办法
96
查看次数

在java中使用foreach循环时出现奇怪的错误

我正在做一个小小的todolist程序,我得到了一个我从未有过的奇怪的错误.我有4个类:1个包含todo-data的POJO类:

public class Todo implements Comparable {
  private String title;
  private String task;
  private boolean done;

  public Todo(String title, String task) {
    this.title = title;
    this.task = task;
  }

  public String getTitle() {
    return title;
  }

  public void setTitle(String newTitle) {
    title = newTitle;
  }

  public String getTask() {
    return task;
  }

  public void setTask(String newTask) {
    task = newTask;
  }

  public boolean isDone() {
    return done;
  }

  public void setDone(boolean isDone) {
    done = isDone;
  }

  public int compareTo(Object …
Run Code Online (Sandbox Code Playgroud)

java foreach arraylist

0
推荐指数
1
解决办法
1078
查看次数

标签 统计

java ×4

arraylist ×1

exception ×1

file-io ×1

foreach ×1

html ×1

html5 ×1

io ×1

java-9 ×1

javafx ×1

javascript ×1

object ×1

telemetry ×1