//cd c:\HPBasic\Toppage-sample3\MySwing //javac Omikuji2.java //set CLASSPATH=. //appletviewer Omikuji2.html import java.applet.*; import java.awt.*; import java.awt.event.*; import java.net.*; import javax.swing.*; /* */ public class Omikuji2 extends JApplet implements ActionListener { JLabel label1; public void init(){ Container pane = getContentPane(); String html1=""; JButton uranai = new JButton(html1 + "あなたの運勢は?"); uranai.addActionListener(this); pane.add(uranai,BorderLayout.WEST); label1 = new JLabel(""); pane.add(label1,BorderLayout.EAST); URL baseURL = getCodeBase(); ImageIcon icon = new ImageIcon(getURL(baseURL,"shinobazu47.jpg")); // "../image/shinobazu47.jpg" でもトライしたが、ローカルではだめ。 JLabel label2 = new JLabel(icon); pane.add(label2,BorderLayout.SOUTH); } public void actionPerformed(ActionEvent event) { String[] omikuji = {"大吉","吉","小吉","小凶","凶","大凶"}; int n = (int)Math.floor(Math.random()*6); String message = " すべてうまくいくが、調子に乗らぬこと"; String message1 = " 小さな喜び事あり。争いを避けること"; String message2 = " これからが肝心。今の調子でがんばれ"; String message3 = " 思わぬところに落とし穴が。用心すべし"; String message4 = " 何事も辛抱"; String message5 = " 今が最悪期。これから徐々に運が上向く"; String html2=""; String html3="

"; switch (n) { case 0: label1.setText(html2 + omikuji[0] + html3 + message); break; case 1: label1.setText(html2 + omikuji[1] + html3 + message1); break; case 2: label1.setText(html2 + omikuji[2] + html3 + message2); break; case 3: label1.setText(html2 + omikuji[3] + html3 + message3); break; case 4: label1.setText(html2 + omikuji[4] + html3 + message4); break; case 5: label1.setText(html2 + omikuji[5] + html3 + message5); break; } } protected URL getURL(URL codeBase, String filename) { URL url = null; try { url = new URL(codeBase, filename); } catch (java.net.MalformedURLException e) { System.out.println("Couldn't create image: badly specified URL"); return null; } return url; } } /* 1 Omikuji2.java ImageIcon("rakan168.jpg") では、appletviewerはOKだが、ブラウザではだめ(Omikuji4.java)なので、ImageIcon(URL url)を使用。 uswing/components/TumbleItem.htmlを参考にした。 スロー宣言が必要とのことで、getURLメソッドを作り、Omikuji2.javaで解決した。 appletviewer、ブラウザともOK。"../image/rakan168.jpg" はappletviewer ではだめ。 (ただ、Lunar.javaの URL iconURL=ClassLoader.getSystemResource("rakan168.jpg"); ImageIcon icon = new ImageIcon(iconURL); は失敗。Omikuji20.javaとした) ImageIcon icon = new ImageIcon(getCodeBase(),"rakan168.jpg"); とすると、appletviewerでもだめ。 URL baseURL=getCodeBase(); URL url=new URL(baseURL,"rakan168.jpg"); JLabel label2 = new JLabel(new ImageIcon(url)); C:\HPBasic\Toppage-sample3\MySwing>javac Omikuji.java Omikuji.java:31: 例外 java.net.MalformedURLException は報告されません。スローす るにはキャッチまたは、スロー宣言をしなければなりません。 URL url=new URL(baseURL,"rakan168.jpg"); 11/6 12時 ブラウザで再度おかしくなった。しかし、アップすると大丈夫でした!! java.security.AccessControlException: access denied (java.io.FilePermission \C:\HPBasic\Toppage-sample3\image\rakan168.jpg read) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkRead(Unknown Source) at sun.awt.SunToolkit.getImageFromHash(Unknown Source) at sun.awt.SunToolkit.getImage(Unknown Source) at javax.swing.ImageIcon.(Unknown Source) at javax.swing.ImageIcon.(Unknown Source) at Omikuji2.init(Omikuji2.java:31) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 2 Omikuji4.java ImageIcon("rakan168.jpg") appletviewerは、OK。"../image/rakan168.jpg"はだめ。 JLabel label2 = new JLabel(icon);でもいい。 しかし、ブラウザではだめ。 java.security.AccessControlException: access denied (java.io.FilePermission ../image/rakan168.jpg read) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkRead(Unknown Source) at sun.awt.SunToolkit.getImageFromHash(Unknown Source) at sun.awt.SunToolkit.getImage(Unknown Source) at javax.swing.ImageIcon.(Unknown Source) at javax.swing.ImageIcon.(Unknown Source) at Omikuji.init(Omikuji.java:30) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source) */