जवाबों:
मान लें कि आपका चरण "चरण" है और फ़ाइल फ़ाइल सिस्टम पर है:
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" )));
कार्यों का उपयोग करते हुए अन्य समाधानों में से एक ।
मैंने यह कोशिश की और यह पूरी तरह से काम करता है। कोड है:
stage.getIcons().add(
new Image(
<yourclassname>.class.getResourceAsStream( "icon.png" )));
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);
}
}
आउटपुट स्क्रेंशॉट
JavaFX 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"));
आशा करता हूँ की ये काम करेगा। धन्यवाद!!
यदि आपके पास एक चित्र फ़ोल्डर है और आइकन उस उपयोग में सहेजा गया है
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")));
यदि आपका icon.png संसाधनों में है, तो पहले याद रखें कि '' / '' रखना है, अन्यथा यह काम नहीं करेगा
आप अपने src डायरेक्टरी में नया पैकेज यानी इमेज बनाने के बारे में क्या सोचते हैं? बस आपको लिखने की आवश्यकता है:
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 () जोड़ें (नई छवि ("छवि पथ"));
stage.getIcons().add(new Image("/images/logo_only.png"));
अपने src फोल्डर में इमेज फोल्डर बनाना और उससे इमेज प्राप्त करना अच्छी आदत है।
यदि आप जार फ़ाइल चलाते हैं, तो माइकल बेरी द्वारा निर्दिष्ट कोड शीर्षक बार में और टास्कबार में आइकन बदल देगा। शॉर्टकट आइकन नहीं बदला जा सकता है।
यदि आप 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 ()। Remove (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")));
}
}
JavaFX में टाइटल बार पर अपना खुद का आइकन डालने का एक और आसान तरीका है, निम्न विधि का उपयोग करके अपने प्राथमिक चरण में इमेज को जोड़ना:
Image ico = new Image("resources/images/iconLogo.png");
stage.getIcons().add(ico);
सुनिश्चित करें कि आपका आयात javafx.scene.image.Image (यदि netbeans की तरह एक विचारधारा का उपयोग करके यह स्वचालित रूप से आपके लिए किया जाना चाहिए)।
मैंने यह कोशिश की और यह काम करता है:
stage.getIcons().add(new Image(getClass().getResourceAsStream("../images/icon.png")));