我试过了
stage.getIcons().add(new Image("attuncore.jpg"));
但我不知道出了什么问题..
请帮忙。提前致谢。
初学者的完整程序:) 这个程序设置了堆栈溢出图标。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class StackoverflowIcon extends Application {
@Override
public void start(Stage stage) {
StackPane root = new StackPane();
// set icon
stage.getIcons().add(new Image("/path/to/stackoverflow.jpg"));
stage.setTitle("Wow!! Stackoverflow Icon");
stage.setScene(new Scene(root, 300, 250));
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
输出截图
为 JavaFX 8 更新
无需更改代码。它仍然可以正常工作。在 Java 1.8(1.8.0_45) 中测试和验证。路径可以设置为本地或远程两者都支持。
stage.getIcons().add(new Image("/path/to/javaicon.png"));
或者
stage.getIcons().add(new Image("https://example.com/javaicon.png"));
希望能帮助到你。谢谢!!
您可以像这样从类路径加载图像:
new Image(XYZ.class.getResourceAsStream("/xyz.png"))
其中 XYZ 是某个类名(可能是您从中加载图像的类名), xyz.png 是图像文件的名称,放在类路径中包含的目录(或 JAR 文件)中。
如果您想将图像放在源文件旁边,则必须省略 / 字符。然后,您的 IDE 需要配置为将资源(如 *.png)从 src 复制到 bin 目录。但这应该是标准行为。
对于那些有问题的人:
无效的 URL:无效的 URL 或找不到资源
最好的解决方案是制作新的包,即 image.icons 并将您的 .png 图像移到那里。然后你只需要写:
Image image = new Image("/image/icons/list.png");
primaryStage.getIcons().add(image);
我希望这对某人有帮助!
不要忘记进行导入
import javafx.scene.image.Image;
Image icon = new Image(getClass().getResourceAsStream("myicon.png"));
stage.getIcons().add(icon);
替换"myicon.png"
为您的图标。在这种情况下,它与您的 java 类位于同一文件夹中。
您的图像尺寸正确吗?Javadoc 指出:
公共最终 ObservableList getIcons()
获取要在窗口装饰和最小化时使用的图标图像。图像应该是同一图像的不同尺寸,并且将选择最佳尺寸,例如。16x16, 32,32。
我通过将独立工作目录的属性设置为放置我的主要和图像的包找到的解决方案。