[英]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.