2012-04-12 28 views

उत्तर

152

अपने चरण मान लिया जाये कि "मंच" है और फाइल फाइल सिस्टम पर है:

stage.getIcons().add(new Image("file:icon.png")); 

नीचे टिप्पणी के अनुसार, अगर यह एक युक्त जार में लिपटे है आप के बजाय निम्नलिखित दृष्टिकोण का उपयोग करने की आवश्यकता होगी:

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("icon.png"))); 
+5

इसके अतिरिक्त, यदि आइकन को एप्लिकेशन शॉर्टकट के रूप में स्थापित किया जाना है और आप वेबस्टार्ट को तैनाती तकनीक के रूप में उपयोग कर रहे हैं तो आप अपनी जेएनएलपी फ़ाइल में उचित आइकन/शॉर्टकट/डेस्कटॉप सेटिंग्स सेट करना चाहेंगे: http: // docs। oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/syntax.html – jewelsea

+9

आप विभिन्न आकारों की कई छवियां जोड़ सकते हैं और जावाएफएक्स सबसे अच्छा फिट बैठता है। क्योंकि आपके पास टास्क बार में अलग-अलग आकार हैं और टाइटल बार में अलग हैं। – drzymala

+9

मुझे लगता है कि यह केवल तभी काम करता है जब फाइल फ़ाइल सिस्टम में होती है, अधिक आम स्थिति जहां आइकन जार फ़ाइल के अंदर लपेटा जाता है और क्लासपाथ में, यह मेरे लिए काम नहीं कर रहा था। 'Stage.getIcons()। का उपयोग कर अन्य समाधानों में से एक ( नई छवि ( .class.getResourceAsStream ("icon.png"));' काम करता है। –

58

मैंने कोशिश की और यह पूरी तरह से काम करता है। कोड है:

stage.getIcons().add(
    new Image(
     <yourclassname>.class.getResourceAsStream("icon.png"))); 

icon.png स्रोत फ़ाइलों के समान फ़ोल्डर के नीचे है।

Image ico = new Image("resources/images/iconLogo.png"); 
stage.getIcons().add(ico); 

सुनिश्चित करें कि आपके आयात javafx.scene.image.Image करें:

-2

JavaFX में शीर्षक पट्टी पर अपने खुद के आइकन डालने के लिए एक और आसान तरीका निम्न विधि का उपयोग कर अपने प्राथमिक स्तर के लिए चित्र जोड़ना है (यदि नेटबीन्स जैसे विचार का उपयोग करना है तो यह आपके लिए स्वचालित रूप से किया जाना चाहिए)।

+34

यह नहीं है कि ** बिल्कुल * * ऊपर क्या पोस्ट किया गया है? – XXL

53

स्टार्टर्स के लिए पूर्ण कार्यक्रम :) इस कार्यक्रम ने स्टैक ओवरफ़्लो आइकन सेट किया है।

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); 
    } 
} 

आउटपुट Screnshot

JavaFX Screenshot

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")); 

enter image description here

आशा है कि यह मदद करता है। धन्यवाद!!

+0

क्या यह एसवीजी का समर्थन करता है? – qed

+0

@qed, मुझे नहीं लगता कि एसवीजी समर्थित है, लेकिन मैं 100% निश्चित नहीं हूं। आप इसका परीक्षण कर सकते हैं। –

1
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png"))); 

अपने icon.png संसाधन निर्देशिका में है और डाल करने के लिए एक '/' अन्यथा इससे पहले कि यह

0

मैं इस कोशिश की काम नहीं करेगा याद है और यह काम करता है, तो:

stage.getIcons().add(new Image(getClass().getResourceAsStream("../images/icon.png"))); 
1
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png"))); 

आप इस विधि का उपयोग कर विभिन्न आकारों के साथ एक से अधिक आइकन जोड़ सकते हैं। छवियों को एक ही छवि के विभिन्न आकार होना चाहिए और सर्वोत्तम आकार चुना जाएगा। eg. 16x16, 32,32

5

आप एक छवियों फ़ोल्डर है है और आइकन कि उपयोग में सहेजा गया है यदि यह

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"))); 
2

क्या आप अपनी निर्देशिका निर्देशिका में नए पैकेज i.e image.icons बनाने और वहां आपको .png छवियों को स्थानांतरित करने के बारे में क्या सोचते हैं?

Image image = new Image("/image/icons/nameOfImage.png"); 
primaryStage.getIcons().add(image); 

यह समाधान मेरे लिए काम करता पूरी तरह से, लेकिन अभी भी मुझे यकीन है कि नहीं कर रहा हूँ अगर यह सही (शुरुआत यहाँ) है: से तुम सिर्फ लिखने के लिए की जरूरत है।

5

आप इसे fxml में जोड़ सकते हैं। स्टेज स्तर

<icons> 
    <Image url="@../../../my_icon.png"/> 
</icons> 
0
stage.getIcons().add(new Image("/images/logo_only.png")); 

यह अपने स्रोत फ़ोल्डर में छवियों फ़ोल्डर बनाने और इसे से चित्र प्राप्त करने के अच्छी आदत है।

+0

यह उत्तर पूरी तरह अनावश्यक है क्योंकि [एक और उत्तर] (https://stackoverflow.com/a/10122335/8283469) पहले से ही समझाया गया है। –

0
stage.getIcons().add(new Image(ClassLoader.getSystemResourceAsStream("images/icon.png"))); 

छवियों फ़ोल्डर को संसाधन फ़ोल्डर में होना आवश्यक है।

+1

यह उत्तर पूरी तरह से अनावश्यक है क्योंकि [एक और उत्तर] (https://stackoverflow.com/a/10122335/8283469) पहले से ही समझाया गया है। –

0

मैं अपने आवेदन में यह प्रयोग किया जाता

Image icon = new Image(getClass().getResourceAsStream("icon.png")); 
window.getIcons().add(icon); 

यहाँ खिड़की चरण है।