জাভাএফএক্স অ্যাপ্লিকেশন আইকন


172

জাভাএফএক্স ব্যবহার করে অ্যাপ্লিকেশন আইকনটি পরিবর্তন করা সম্ভব, বা সুইং ব্যবহার করে এটি করা দরকার?

উত্তর:


234

আপনার পর্যায়টি ধরে নেওয়া হচ্ছে "পর্যায়" এবং ফাইলটি ফাইল সিস্টেমে রয়েছে:

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

নীচের মতামত অনুসারে, যদি এটি একটি ধারণযুক্ত জারেতে আবৃত থাকে তবে পরিবর্তে আপনাকে নিম্নলিখিত পদ্ধতির ব্যবহার করতে হবে:

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

5
অতিরিক্তভাবে, যদি আইকনটি কোনও অ্যাপ্লিকেশন শর্টকাট হিসাবে ইনস্টল করতে হয় এবং আপনি ওয়েবস্টার্টটিকে স্থাপনা প্রযুক্তি হিসাবে ব্যবহার করছেন তবে আপনি আপনার jnlp ফাইলে উপযুক্ত আইকন / শর্টকাট / ডেস্কটপ সেটিংস সেট করতে চাইতে পারেন: ডকস.ওরকল
জুয়েলসি

9
আপনি বিভিন্ন আকারের একাধিক চিত্র যুক্ত করতে পারেন এবং জাভাএফএক্স সবচেয়ে ভাল মানায় এমন একটি চয়ন করবে। কারণ আপনার টাস্ক বারে বিভিন্ন আকার এবং শিরোনাম বারে আলাদা।
ড্রাগজমালা

11
আমি মনে করি এটি কেবল তখনই কাজ করে যখন ফাইলটি ফাইল সিস্টেমে থাকে, আরও সাধারণ পরিস্থিতিতে যেখানে আইকনটি জার ফাইলের ভিতরে এবং ক্লাসপাথে আবৃত থাকে, এটি আমার পক্ষে কাজ করে না। stage.getIcons().add( new Image( <yourclassname>.class.getResourceAsStream( "icon.png" )));কাজগুলি ব্যবহার করে অন্য একটি সমাধান ।
k_o_

3
দয়া করে না, উবুন্টু (Unক্য) এ আইকনটি কেবল উইন্ডো সজ্জার জন্য ব্যবহৃত হয়, তবে লঞ্চারের জন্য নয়। আইকনটি দৃশ্যমান হওয়ার জন্য (কুরুচিপূর্ণ প্রশ্ন চিহ্নের পরিবর্তে) আপনার উপযুক্ত .dektopফাইল নির্দিষ্ট করতে হবে। আমার বিবরণটি এখানে দেখুন
dzim

1
এটি কেবলমাত্র শিরোনাম বারের আইকনটিতে अर्थात উইন্ডোতে উপরের বাম দিকে পরিবর্তন করে। ডেস্কটপে শর্টকাট হিসাবে থাকা অবস্থায় অ্যাপ্লিকেশনটির আইকন কীভাবে পরিবর্তন করবেন? এবং টাস্কবারে?
তেজপালবিহ

74

আমি এটি চেষ্টা করেছি এবং এটি সম্পূর্ণরূপে কাজ করে। কোডটি হ'ল:

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

আইকন.পিএনজি উত্স ফাইলগুলির মতো একই ফোল্ডারের অধীনে।


3
'<yourclassname> .class' 'getClass ()' দ্বারা প্রতিস্থাপন করা যেতে পারে
জিম ফ্রেড

71

শুরুর জন্য সম্পূর্ণ প্রোগ্রাম :) এই প্রোগ্রামটি স্ট্যাকওভারফ্লো আইকনটির জন্য আইকন সেট করে।

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

এখানে চিত্র বর্ণনা লিখুন

আশা করি এটা সাহায্য করবে. ধন্যবাদ !!


এটি কি এসজিজি সমর্থন করে?
কেইড

1
@ কেয়েড, আমি মনে করি না এসভিজি সমর্থিত তবে আমি ১০০% নিশ্চিত নই। আপনি এটি পরীক্ষা করতে পারেন।
মদন সাপকোটা

আমি জাভাএফএক্স অ্যাপ্লিকেশন আইকনটির জন্য একটি .svg ফাইলটি ব্যবহার করার চেষ্টা করেছি। এটা কাজ করে না. কোনও ত্রুটি সরবরাহ করা হয়নি, তবে জাভাএফএক্স আমার কাস্টমটির পরিবর্তে এর ডিফল্ট লোগো ব্যবহার করেছে।
সাইমন ডিয়েমার্ট


7

আপনার যদি একটি চিত্র ফোল্ডার থাকে এবং আইকনটি সেভ হয় তবে এটি ব্যবহার করুন

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
stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png")));

যদি আপনার আইকন.পিএনজি সংস্থানসমূহে থাকে এবং একটি '/' রাখার আগে মনে রাখবেন অন্যথায় এটি কাজ করবে না


2

আপনার এসআরসি ডিরেক্টরিতে নতুন প্যাকেজ অর্থাৎ ইমেজ.আইকন তৈরি এবং আপনি .png চিত্রগুলি স্থানান্তর সম্পর্কে আপনার ধারণা কী? আপনার কেবল লেখার দরকার নেই:

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

এই সমাধানটি আমার পক্ষে নিখুঁতভাবে কাজ করে, তবে এখনও আমি নিশ্চিত না এটি সঠিক কিনা (এখানে শিক্ষানবিশ)।


আপনার জাভা প্যাকেজগুলিতে সংস্থান স্থাপন করা ভাল অনুশীলন নয়। এগুলি আপনার resourcesফোল্ডারে রাখার পরামর্শ দেওয়া হচ্ছে।
থিবাস্টারস

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

আপনি এই পদ্ধতিটি ব্যবহার করে বিভিন্ন আকারের একাধিক আইকন যুক্ত করতে পারেন images চিত্রগুলি একই চিত্রের বিভিন্ন আকারের হওয়া উচিত এবং সেরা আকারটি চয়ন করা হবে। eg. 16x16, 32,32


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

ইমেজ ফোল্ডারটি রিসোর্স ফোল্ডারে থাকা দরকার।


4
এই উত্তরটি সম্পূর্ণ অপ্রয়োজনীয় যেহেতু অন্য উত্তর ইতিমধ্যে একই ব্যাখ্যা করেছে।
এল। গুথার্ড

1

আপনি এই কোড লাইনটি ব্যবহার করে সহজেই আপনার অ্যাপ্লিকেশনটিতে আইকনটি রাখতে পারেন

মঞ্চে। আইকনস ()। যোগ করুন (নতুন চিত্র ("চিত্রের পথ"));


0
stage.getIcons().add(new Image("/images/logo_only.png"));

আপনার এসআরসি ফোল্ডারে ইমেজ ফোল্ডার তৈরি করা এবং এটি থেকে চিত্রগুলি পাওয়া ভাল অভ্যাস।


এই উত্তরটি সম্পূর্ণ অপ্রয়োজনীয় যেহেতু অন্য উত্তর ইতিমধ্যে একই ব্যাখ্যা করেছে।
এল। গুথার্ট

0

আমি আমার আবেদনে এটি ব্যবহার করেছি

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

এখানে উইন্ডোটি মঞ্চ।


0

আপনি যদি জার ফাইলটি চালান, মাইকেল বেরি দ্বারা নির্দিষ্ট কোড শিরোনাম বারে এবং টাস্কবারে আইকনটি পরিবর্তন করবে। শর্টকাট আইকন পরিবর্তন করা যায় না।

আপনি যদি 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>

এটি শর্টকাট এবং টাস্কবারে একটি আইকন যুক্ত করবে।


0

রানটাইমের সময় আইকনগুলি টগল করুন:

এখানে প্রতিক্রিয়াগুলি ছাড়াও, আমি দেখতে পেলাম যে একবার আপনি যখন প্রথমবারের মধ্যে আপনার অ্যাপ্লিকেশনটিতে একটি আইকন বরাদ্দ করেছেন আপনি কেবলমাত্র আপনার পর্যায়ে একটি নতুন আইকন যুক্ত করে এটি টগল করতে পারবেন না (যদি আপনাকে আপনার আইকনটি টগল করতে হয় তবে এটি সহায়ক হবে) চালু / বন্ধ সক্ষম / অক্ষম থেকে অ্যাপ্লিকেশন)।

রান টাইমের সময় একটি নতুন আইকন সেট করতে, নতুন আইকন যুক্ত করার চেষ্টা করার আগে 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")));
    }
}

-1

যদি আপনি Invalid URL or resource not foundআপনার কর্মক্ষেত্রের "বিন" ফোল্ডারে আপনার আইকন.পিএনজি রাখেন।


-2

জাভাএফএক্স-এ শিরোনাম বারে আপনার নিজের আইকনটি inোকানোর আরেকটি সহজ উপায় হ'ল নিম্নলিখিত পদ্ধতিটি ব্যবহার করে চিত্রটিকে আপনার প্রাথমিক পর্যায়ে যুক্ত করা:

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

নিশ্চিত করুন যে আপনার আমদানি javafx.scene.image.I छवि (নেটবিনের মতো কোনও আদর্শ ব্যবহার করলে এটি আপনার জন্য স্বয়ংক্রিয়ভাবে করা উচিত) Make


40
উপরে পোস্ট করা হয়েছে ঠিক কি তাই না ?
XXL

-2

আমি এটি চেষ্টা করেছিলাম এবং এটি কাজ করে:

stage.getIcons().add(new Image(getClass().getResourceAsStream("../images/icon.png")));

আসলে, .. না: সংস্থানসমূহ অনুসন্ধানে বিন্দুগুলি সমর্থিত নয়, দয়া করে এপিআই ডকটি পড়ুন
ক্লিওপাত্রা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.