JavaFx标题栏图像一直呈现黑色

时间:2013-03-07 19:12:29

标签: java javafx-2

在研究了很多帖子并尝试了所有内容之后,我自己完成了一项任务,就像使用eclipse IDE和Java FX 2在标题栏上设置一个图标一样简单。

它会显示默认的空窗口图标或返回黑色。请让我知道我做错了什么。

以下是我的一些尝试,

//Image ico = new Image(UI.class.getResourceAsStream("Sunset.jpg"), 16, 16,      true,true);        
//Image ico = new Image("Sunset.jpg", true);// looks inside src folder
//primaryStage.getIcons().add(new Image(UI.class.getResourceAsStream("/title.jpeg")));
//primaryStage.getIcons().add(new Image(UI.class.getResourceAsStream("title.jpeg")));

Image ico = new Image(UI.class.getResourceAsStream("Sunset.jpg"));
primaryStage.getIcons().add(ico);       

我已尝试使用我一直使用的照片,

  1. 我使用属性为300x300像素的图片
  2. 我将300x300像素的图片转换为16x16像素
  3. 我使用* .ico同时使用32x32和16x16像素
  4. 我将.ico转换为jpeg并尝试过。
  5. 请让我知道,我怎么能克服这一点。 谢谢!

    系统详情:

    java.runtime.version - 1.7.0_11-b21
    javafx.runtime.version - 2.2.4-b19
    操作系统名称 - MS Win XP Professional
    操作系统版本 - 5.1.2600 Service Pack 3 Build 2600
    操作系统架构 - 32位
    显卡 - 英特尔®高清显卡
    显卡驱动程序 - igxpmp32.sys版本6.14.10.5384

3 个答案:

答案 0 :(得分:3)

原因似乎是JavaFx中的潜在错误。如果您的系统设置为32位以下的任何颜色,您将获得任务栏和标题栏图标的黑框。将系统设置为32位颜色将修复它。

答案 1 :(得分:1)

以下适用于我:

Image image = new Image(<some valid image location here>);
stage.getIcons().setAll(image);

以下是一个示例应用:

import static javafx.application.Application.launch;
import javafx.application.*;
import javafx.scene.Scene;
import javafx.scene.image.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class IconApp extends Application {
  @Override public void start(Stage stage) {
    Image image = new Image(
      "http://icons.iconarchive.com/icons/tooschee/misc/128/Present-icon.png"
    );
    stage.getIcons().setAll(image);

    final VBox layout = new VBox(10);
    layout.setStyle("-fx-background-color: cornsilk; -fx-padding: 10;");
    layout.getChildren().setAll(new ImageView(image));

    stage.setScene(new Scene(layout));
    stage.show();
  }

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

// icon license (creative commons 3 with attribution): 
//   http://creativecommons.org/licenses/by-nc/3.0/
// icon attribution: 
//   http://tooschee.com/portfolio?worksCategory=icons

应用程序的输出(您可以在标题栏的左上角看到舞台图标):

presenticon

该图标也显示在操作系统任务栏中:

presenticonintaskbar

测试系统是Windows 7,Java 8b77。

答案 2 :(得分:0)

如果您将显示器置于16位操作模式,即使在Windows 7上也可以重现此错误: 屏幕分辨率 - &gt;高级设置 - &gt;监视器(标签) - &gt;颜色= 16位

似乎这个问题已填入JavaFX跟踪器: 来自另一个答案的Joe S. https://javafx-jira.kenai.com/browse/RT-28947,但我不打算在JDK8中修复它。