簡體   English   中英

帶有Java Swing for Desktop的自定義工具欄

[英]Custom ToolBar with Java Swing for Desktop

我已經使用Java Swing創建了一個GUI,並希望根據我的模塊創建一個自定義工具欄。 以下是想要使用的圖像:

在此處輸入圖片說明

這些圖像與應用程序中的src文件夾位於同一級別。 我知道我也許可以用這些圖像創建一個jar,以便可以從應用程序中輕松訪問它們,但不知道如何操作。 我已經花了幾個小時試圖使這項工作。

下面是我創建的廣告的GUI,該廣告要使用工具欄的這些圖片進行美化,還創建了一個標簽數組,這些標簽將用作導航,但是兩種方法都無法使其正常工作。

在此處輸入圖片說明

下面的代碼是我對此的最后嘗試:

 JToolBar toolbar1 = new JToolBar();

 ImageIcon client = new ImageIcon("clients.png");
 ImageIcon timesheet = new ImageIcon("timesheets.png");

 JButton clientTB = new JButton(client);
 JButton timesheetTB = new JButton(timesheet);

 toolbar1.add(clientTB );
 toolbar1.add(timesheetTB);

 add(toolbar1, BorderLayout.NORTH);

我什至移動了這些圖像並將它們放置在稱為它們的班級中。

我可能做錯了什么,請幫忙?

您可以查看JavaDocs for ImageIcon(String) ,該String值為“指定文件名或路徑的字符串”

這是一個問題,因為您的圖像實際上不再是文件,它們已經被嵌入到您的應用程序中(通常在生成的jar文件中),並且不再被視為“普通文件”。

相反,您需要使用Class#getResource ,它在應用程序的類路徑中搜索命名資源,例如...

// This assumes that the images are in the default package 
// (or the root of the src directory)
ImageIcon client = new ImageIcon(getClass().getResource("/clients.png"));

現在,我個人不喜歡ImageIcon ,因為它不會告訴您由於某種原因(例如找不到圖像或格式錯誤)何時加載圖像。

相反,我將使用ImageIO讀取圖像

ImageIcon client = new ImageIcon(ImageIO.read(getClass().getResource("/clients.png")));

這將做兩件事,首先,如果由於某種原因無法加載圖像,它將拋出IOException ,直到圖像完全加載,它才返回。

有關更多詳細信息,請參見讀取/加載圖像

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM