我想在我的 Java 應用程式中使用我的作業系統(kali linux gnome)的默認圖示。我不知道是否需要匯入整個圖示包,或者我是否只是使用一些 java swing 方法。你能向我解釋如何進行嗎?
uj5u.com熱心網友回復:
不完全確定這是否是您所要求的,但這些將設定特定于作業系統的外觀:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
uj5u.com熱心網友回復:
最簡單的方法是直接使用圖示檔案:
Icon icon = new ImageIcon("/usr/share/icons/Adwaita/32x32/actions/document-open.png");
但實際上,圖示比這更復雜。圖示主題的作業方式有一個完整的規范。它包括一個中等復雜的演算法,用于按型別和大小匹配所需的圖示。
Java SE 無法讀取我所知道的 SVG 影像,因此您需要為 Java 找到一個健壯、穩定的 SVG 庫,或者您需要忽略主題的可伸縮目錄。
我知道獲取最終用戶當前圖示主題的唯一方法是使用如下命令:
ProcessBuilder builder = new ProcessBuilder(
"gsettings", "get", "org.gnome.desktop.interface", "icon-theme");
builder.redirectError(ProcessBuilder.Redirect.INHERIT);
String themeName;
Process iconThemeCommand = builder.start();
try (InputStream commandOutput = iconThemeCommand.getInputStream()) {
themeName = new String(commandOutput.readAllBytes()).trim();
}
iconThemeCommand.waitFor();
還有多平臺的問題。顯然 Windows 和 OSX 沒有/usr/share/icons/Adwaita目錄。您可以將圖示主題樹與您的應用程式捆綁在一起,但它可能在 GPL 或類似許可下,因此您必須在該許可下發布您的軟體(或根本不發布它)并在您的程式中包含該許可的副本,并通知用戶從何處獲取您的程式的源代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/448458.html
