//cd c:\HPBasic\Toppage-sample3\MySwing\Slideshow100 //javac Slideshow1.java //set CLASSPATH=. //appletviewer Slideshow1.html //appletviewer Slideshow1.java import java.applet.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; /* */ public class Slideshow1 extends JApplet implements ActionListener { Container contentPane; SlidePanel1 slidepanel1; JButton startButton; JButton stopButton; AudioClip onceClip; public void init(){ contentPane = getContentPane(); slidepanel1 = new SlidePanel1(); Dimension d =new Dimension(600,480); slidepanel1.setPreferredSize(d); JPanel minipanel= new JPanel(); // JPanel showpanel=new JPanel(); startButton = new JButton("Start"); stopButton = new JButton("Stop"); startButton.addActionListener(this); stopButton.addActionListener(this); contentPane.add(minipanel,BorderLayout.NORTH); contentPane.add(slidepanel1,BorderLayout.CENTER); minipanel.add(startButton); minipanel.add(stopButton); minipanel.setBackground(Color.green); slidepanel1.setBackground(Color.yellow); } public void actionPerformed(ActionEvent event) { Object source = event.getSource(); if (source == startButton) { String midiFile = "coroptica.mid"; onceClip = getAudioClip(getCodeBase(),midiFile); onceClip.play(); //AudioPlay slidepanel1.init(); } if (source == stopButton) { onceClip.stop(); //AudioStop slidepanel1.stop(); } } class SlidePanel1 extends JPanel implements Runnable{ Thread t; ImageIcon icon; int i = 1; int n = 7; //NUM_IMAGES String str ="コスモス"; public void init(){ // スレッドを起動する t = new Thread(this); t.start(); } public void run() { try { Thread mythread = Thread.currentThread(); while(t == mythread) { i++; if (i > n) i=1; update(); Thread.sleep(3000); } } catch (Exception e) { } } public void update(){ switch(i) { case 1: str="コスモス1"; break; case 2: str="コスモス2"; break; case 3: str="コスモス3"; break; case 4: str="コスモス4"; break; case 5: str="コスモス5"; break; case 6: str="コスモス6"; break; case 7: str="コスモス7"; break; default: str="不明"; } repaint(); } public void stop() { t=null; } public void paintComponent(Graphics g) { super.paintComponent(g); String imageName = "kosmos" + i + ".jpg"; // icon = new ImageIcon(imageName); URL baseURL = getCodeBase(); icon = new ImageIcon(getURL(baseURL,imageName)); g.drawImage(icon.getImage(),0,0,null); g.setFont(new Font("Serif", Font.BOLD, 30)); g.setColor(Color.blue); g.drawString("" + str,220,510); System.out.println("paint i = " + i + " imageName = " + imageName); } 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; } } } /* 失敗したSlide10と同じだが、別クラスだったSlidePanelを内部クラスとした。 エラーになっただった paintComponentに書いたgetCodeBase()がJAppletと関連づけられるようで、成功した。 */