//cd c:\HPBasic\Toppage-sample3\MySwing\Slideshow100 //javac Slideshow20.java //set CLASSPATH=. //appletviewer Slideshow20.html //appletviewer Slideshow20.java import java.applet.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; /* */ public class Slideshow20 extends JApplet implements ActionListener,Runnable { Container contentPane; SlidePanel20 slidepanel20; JButton startButton; JButton stopButton; AudioClip onceClip; Thread t; ImageIcon icon; int i = 0; int n = 7; //NUM_IMAGES String str ="コスモス"; public void init(){ contentPane = getContentPane(); System.out.println("Slideshow20 init 1"); slidepanel20 = new SlidePanel20(icon,str); System.out.println("Slideshow20 init 2"); Dimension d =new Dimension(600,480); JPanel minipanel= new JPanel(); startButton = new JButton("Start"); stopButton = new JButton("Stop"); startButton.addActionListener(this); stopButton.addActionListener(this); contentPane.add(minipanel,BorderLayout.NORTH); contentPane.add(slidepanel20,BorderLayout.CENTER); minipanel.add(startButton); minipanel.add(stopButton); minipanel.setBackground(Color.green); slidepanel20.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 start(); } if (source == stopButton) { onceClip.stop(); //AudioStop stop(); } } public void start(){ // スレッドを起動する t = new Thread(this); t.start(); } public void run() { try { Thread mythread = Thread.currentThread(); while(t == mythread) { i++; if (i > n) i=1; System.out.println("run " + " i = " + i); update(); Thread.sleep(3000); } } catch (Exception e) { } } public void update(){ String imageName = "kosmos" + i + ".jpg"; URL baseURL = getCodeBase(); icon = new ImageIcon(getURL(baseURL,imageName)); 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="不明"; } System.out.println("update 1" + " i = " + i + " str = " + str); slidepanel20=new SlidePanel20(icon,str); System.out.println("update 2"); slidepanel20.init(); } 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; } public void stop() { t=null; } } class SlidePanel20 extends JPanel { ImageIcon icon; String str; SlidePanel20(ImageIcon icon,String str){ this.icon = icon; this.str= str; System.out.println("SlidePanel20" + " str = " + str ); } public void init() { System.out.println("SlidePanel20 init"); repaint(); } public void paintComponent(Graphics g) { super.paintComponent(g); System.out.println("paintComponent"); 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); } } /* Slideshow20 init 1 SlidePanel20 str = コスモス Slideshow20 init 2 run i = 1 paintComponent java.lang.NullPointerException at SlidePanel20.paintComponent(Slideshow20.java:148) at javax.swing.JComponent.paint(JComponent.java:808) at javax.swing.JComponent.paintChildren(JComponent.java:647) at javax.swing.JComponent.paint(JComponent.java:817) at javax.swing.JComponent.paintChildren(JComponent.java:647) at javax.swing.JComponent.paint(JComponent.java:817) at javax.swing.JLayeredPane.paint(JLayeredPane.java:557) at javax.swing.JComponent.paintChildren(JComponent.java:647) at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4794) at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4740) at javax.swing.JComponent.paint(JComponent.java:798) at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21) at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60) at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97) at java.awt.Container.paint(Container.java:1312) at sun.awt.RepaintArea.paint(RepaintArea.java:177) at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260) at java.awt.Component.dispatchEventImpl(Component.java:3678) at java.awt.Container.dispatchEventImpl(Container.java:1627) at java.awt.Component.dispatchEvent(Component.java:3477) at java.awt.EventQueue.dispatchEvent(EventQueue.java:456) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137) at java.awt.EventDispatchThread.run(EventDispatchThread.java:100) update 1 i = 1 str = コスモス1 SlidePanel20 str = コスモス1 update 2 SlidePanel20 init run i = 2 update 1 i = 2 str = コスモス2 SlidePanel20 str = コスモス2 update 2 SlidePanel20 init */