উত্তর:
আপনার পর্যায়টি ধরে নেওয়া হচ্ছে "পর্যায়" এবং ফাইলটি ফাইল সিস্টেমে রয়েছে:
stage.getIcons().add(new Image("file:icon.png"));
নীচের মতামত অনুসারে, যদি এটি একটি ধারণযুক্ত জারেতে আবৃত থাকে তবে পরিবর্তে আপনাকে নিম্নলিখিত পদ্ধতির ব্যবহার করতে হবে:
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png")));
stage.getIcons().add( new Image( <yourclassname>.class.getResourceAsStream( "icon.png" )));
কাজগুলি ব্যবহার করে অন্য একটি সমাধান ।
.dektop
ফাইল নির্দিষ্ট করতে হবে। আমার বিবরণটি এখানে দেখুন
আমি এটি চেষ্টা করেছি এবং এটি সম্পূর্ণরূপে কাজ করে। কোডটি হ'ল:
stage.getIcons().add(
new Image(
<yourclassname>.class.getResourceAsStream( "icon.png" )));
আইকন.পিএনজি উত্স ফাইলগুলির মতো একই ফোল্ডারের অধীনে।
শুরুর জন্য সম্পূর্ণ প্রোগ্রাম :) এই প্রোগ্রামটি স্ট্যাকওভারফ্লো আইকনটির জন্য আইকন সেট করে।
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);
}
}
আউটপুট স্ক্রিনশট
জাভাএফএক্স 8 এর জন্য আপডেট হয়েছে
কোড পরিবর্তন করার দরকার নেই। এটি এখনও ঠিক কাজ করে। জাভা 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"));
আশা করি এটা সাহায্য করবে. ধন্যবাদ !!
আপনি এফএক্সএমএল এ যুক্ত করতে পারেন। মঞ্চ স্তর
<icons>
<Image url="@../../../my_icon.png"/>
</icons>
আপনার যদি একটি চিত্র ফোল্ডার থাকে এবং আইকনটি সেভ হয় তবে এটি ব্যবহার করুন
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/images/comparison.png")));
এবং যদি আপনি এটি সরাসরি আপনার প্যাকেজ থেকে ব্যবহার করছেন যা কোনও ভাল অনুশীলন নয় এটি ব্যবহার করুন
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("comparison.png")));
এবং যদি আপনার কোনও ফোল্ডার কাঠামো থাকে এবং সেই ব্যবহারের মধ্যে আপনার আইকন থাকে
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("../images/comparison.png")));
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png")));
যদি আপনার আইকন.পিএনজি সংস্থানসমূহে থাকে এবং একটি '/' রাখার আগে মনে রাখবেন অন্যথায় এটি কাজ করবে না
আপনার এসআরসি ডিরেক্টরিতে নতুন প্যাকেজ অর্থাৎ ইমেজ.আইকন তৈরি এবং আপনি .png চিত্রগুলি স্থানান্তর সম্পর্কে আপনার ধারণা কী? আপনার কেবল লেখার দরকার নেই:
Image image = new Image("/image/icons/nameOfImage.png");
primaryStage.getIcons().add(image);
এই সমাধানটি আমার পক্ষে নিখুঁতভাবে কাজ করে, তবে এখনও আমি নিশ্চিত না এটি সঠিক কিনা (এখানে শিক্ষানবিশ)।
resources
ফোল্ডারে রাখার পরামর্শ দেওয়া হচ্ছে।
stage.getIcons().add(new Image(ClassLoader.getSystemResourceAsStream("images/icon.png")));
ইমেজ ফোল্ডারটি রিসোর্স ফোল্ডারে থাকা দরকার।
আপনি এই কোড লাইনটি ব্যবহার করে সহজেই আপনার অ্যাপ্লিকেশনটিতে আইকনটি রাখতে পারেন
মঞ্চে। আইকনস ()। যোগ করুন (নতুন চিত্র ("চিত্রের পথ"));
stage.getIcons().add(new Image("/images/logo_only.png"));
আপনার এসআরসি ফোল্ডারে ইমেজ ফোল্ডার তৈরি করা এবং এটি থেকে চিত্রগুলি পাওয়া ভাল অভ্যাস।
আপনি যদি জার ফাইলটি চালান, মাইকেল বেরি দ্বারা নির্দিষ্ট কোড শিরোনাম বারে এবং টাস্কবারে আইকনটি পরিবর্তন করবে। শর্টকাট আইকন পরিবর্তন করা যায় না।
আপনি যদি com.zenjava দিয়ে সংকলিত একটি নেটিভ প্রোগ্রাম পরিচালনা করেন তবে আপনাকে অবশ্যই প্রোগ্রাম আইকনটিতে একটি লিঙ্ক যুক্ত করতে হবে:
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>8.8.3</version>
<configuration>
...
<bundleArguments>
<icon>${project.basedir}/src/main/resources/images/filename.ico</icon>
</bundleArguments>
</configuration>
</plugin>
এটি শর্টকাট এবং টাস্কবারে একটি আইকন যুক্ত করবে।
রানটাইমের সময় আইকনগুলি টগল করুন:
এখানে প্রতিক্রিয়াগুলি ছাড়াও, আমি দেখতে পেলাম যে একবার আপনি যখন প্রথমবারের মধ্যে আপনার অ্যাপ্লিকেশনটিতে একটি আইকন বরাদ্দ করেছেন আপনি কেবলমাত্র আপনার পর্যায়ে একটি নতুন আইকন যুক্ত করে এটি টগল করতে পারবেন না (যদি আপনাকে আপনার আইকনটি টগল করতে হয় তবে এটি সহায়ক হবে) চালু / বন্ধ সক্ষম / অক্ষম থেকে অ্যাপ্লিকেশন)।
রান টাইমের সময় একটি নতুন আইকন সেট করতে, নতুন আইকন যুক্ত করার চেষ্টা করার আগে getIcons () মুছে ফেলুন (0) ব্যবহার করুন, যেখানে 0 আপনার পছন্দ মতো ওভাররাইড করতে চাইছেন এমন আইকনটির সূচি এখানে দেখানো হয়েছে:
//Setting icon by first time (You can do this on your start method).
stage.getIcons().add(new Image(getClass().getResourceAsStream("enabled.png")));
//Overriding app icon with a new status (This can be in another method)
stage.getIcons().remove(0);
stage.getIcons().add(new Image(getClass().getResourceAsStream("disabled.png")));
অন্যান্য পদ্ধতি বা ক্লাস থেকে মঞ্চ অ্যাক্সেস করতে আপনি আপনার মূল শ্রেণীর মঞ্চের জন্য একটি নতুন স্ট্যাটিক ফিল্ড তৈরি করতে পারেন তাই এটি আপনার স্টাফের যে কোনও জায়গা থেকে অ্যাক্সেস করতে পারে এমন একটি স্থির পদ্ধতিতে আবদ্ধ করে শুরু () পদ্ধতি থেকে অ্যাক্সেস করতে পারে ।
public class MainApp extends Application {
private static Stage stage;
public static Stage getStage() { return stage; }
@Override public void start(Stage primaryStage) {
stage = primaryStage
stage.getIcons().add(new Image(getClass().getResourceAsStream("enabled.png")));
}
}
public class AnotherClass {
public void setStageTitle(String newTitle) {
MainApp.getStage().setTitle(newTitle);
MainApp.getStage().getIcons().remove(0);
MainApp.getStage().getIcons().add(new Image(getClass().getResourceAsStream("disabled.png")));
}
}
জাভাএফএক্স-এ শিরোনাম বারে আপনার নিজের আইকনটি inোকানোর আরেকটি সহজ উপায় হ'ল নিম্নলিখিত পদ্ধতিটি ব্যবহার করে চিত্রটিকে আপনার প্রাথমিক পর্যায়ে যুক্ত করা:
Image ico = new Image("resources/images/iconLogo.png");
stage.getIcons().add(ico);
নিশ্চিত করুন যে আপনার আমদানি javafx.scene.image.I छवि (নেটবিনের মতো কোনও আদর্শ ব্যবহার করলে এটি আপনার জন্য স্বয়ংক্রিয়ভাবে করা উচিত) Make
আমি এটি চেষ্টা করেছিলাম এবং এটি কাজ করে:
stage.getIcons().add(new Image(getClass().getResourceAsStream("../images/icon.png")));