はじめに
3 つの静的リソース (画像、オーディオ、フォント) を呼び出す Java フォーム プログラムのコードを紹介します。このメソッドを使用して静的リソースを呼び出すと、静的リソースを JAR パッケージに直接パッケージ化できます。
オーディオ呼び出しでは、Eclipse が原因でエラーが報告される場合があります。解決策については、sun.audio.AudioPlayer (または他のファイル) のインポートに関する問題を参照してください。
デモ
これは、 JFrameの外観 内部で使用されているメソッドは次に掲載するものです。
関数定義
クラス(JFrameから継承したクラス)内にメソッドを定義します。残念ながら、クラスをまたいで呼び出す静的メソッドとして設定することはできません。
/** * 根据相对路径加载图片 * @param path: 图片的相对路径 * @return: 获取到的图片对象 */public Image getImagePath(String path) { Image image=null; InputStream is = (InputStream) this.getClass().getClassLoader().getResourceAsStream(path); try { image=ImageIO.read(is); } catch (IOException e) { e.printStackTrace(); } return image; } /** * 根据相对路径加载音频 * @param path: 音频文件的相对路径 * @return: 获取到的音频对象 */public AudioStream getAudioPath(String resource){ InputStream is = (InputStream) this.getClass().getClassLoader().getResourceAsStream(resource); AudioStream as = null; try { as = new AudioStream(is); } catch (IOException e) { e.printStackTrace(); } return as; } /** * 根据相对路径加载字体 * @param path: 字体文件的相对路径 * @return: 获取到的字体对象 */public Font getDefinedFont(String path) { if (definedFont == null) { InputStream is = null; BufferedInputStream bis = null; try { is = (InputStream) this.getClass().getClassLoader().getResourceAsStream(path); bis = new BufferedInputStream(is); definedFont = Font.createFont(Font.TRUETYPE_FONT, bis); definedFont = definedFont.deriveFont(25f); definedFont = definedFont.deriveFont(Font.BOLD); } catch (FontFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (null != bis) { bis.close(); } if (null != is) { is.close(); } } catch (IOException e) { e.printStackTrace(); } } } return definedFont; }
Callメソッド
/*图片*/logo = getImagePath("resource/image/logo.png"); logoIcon = new ImageIcon(logo); logoLabel = new JLabel(logoIcon); /*字体*/titel = new JLabel(name); titel.setFont(getDefinedFont("resource/font/叶根友毛笔特色简体.ttf")); /*音乐*/backMusic = getAudioPath("resource/music/竹苑情歌.au"); AudioPlayer.player.start(backMusic); /*播放背景音乐*/
txtについて
読むだけなら上記の方法でJARパッケージに入れることも考えられますが、TXTファイルの内容を変更する場合はJARに入れることができません。そこで操作方法としては、ファイルを操作したいソースコード内にパスを使わずにファイル名を直接記述し、JARファイルと同じディレクトリにファイルを保存することでファイル操作が実現できます。もちろん、この方法で他のリソース ファイルにアクセスすることもできますが、特定のケースでは、リソース ファイルを JAR パッケージに入力する方が便利な場合があります。