É isso mesmo, você pode criar um Container fazendo realmente isso:
Container c = getContentPane();
Mas claro, herdando de um JFrame por exemplo.
Coloca o escopo da sua classe aqui
A
andvenancio
Aqui vai a minha classe:
packagebomgourmet;importjava.awt.BorderLayout;importjava.awt.Container;importjava.awt.Dimension;importjava.awt.Font;importjava.awt.Frame;importjava.awt.Graphics;importjava.awt.GraphicsConfiguration;importjava.awt.Image;importjava.awt.MediaTracker;importjava.awt.Toolkit;importjava.awt.Window;importjava.awt.Cursor;importjavax.swing.*;importjavax.swing.event.*;importjava.util.Observable;publicclassSplashextendsWindow{// Mensagem a ser mostrada junto com a imagemprivatefinalStringmessage="Splash Screen";// Barra de progressão privateJProgressBarbarradeprogresso;// Imagem que ira aparecer no SplashprivatefinalStringimgName="src/bomgourmet/splash.jpg";ImagesplashImage;Toolkittoolkit;privatestaticSplashsplash;// Singleton pra garantir apenas uma unica instancia na memoriastatic{splash=newSplash();}privateSplash(){super(newFrame());setVisible(false);splashImage=null;toolkit=Toolkit.getDefaultToolkit();}publicstaticSplashgetInstance(){returnsplash;}privatevoidinitSplash(){// Carrega a imagem na memoriaMediaTrackermedia=newMediaTracker(this);splashImage=toolkit.getImage(imgName);if(splashImage!=null){media.addImage(splashImage,0);try{media.waitForID(0);}catch(InterruptedExceptionie){}}// Configura o tamanho do splash e a posicao na telasetSize(splashImage.getWidth(this),splashImage.getHeight(this));DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();Dimensionsize=getSize();if(size.width>screenSize.width)size.width=screenSize.width;if(size.height>screenSize.height)size.height=screenSize.height;ContainercontentPane=getContentPane();contentPane.setLayout(newBorderLayout());barradeprogresso=newJProgressBar();barradeprogresso.setMaximum(1000000);contentPane.add(barradeprogresso,BorderLayout.SOUTH);/* // configura a ProgressBar JDesktopPane panel = new JDesktopPane(); progressBar = new JProgressBar(); progressBar.setStringPainted(true); panel.add(progressBar); contentPane.add(panel, "South"); contentPane.setVisible(true);*/setLocation((screenSize.width-size.width)/2,(screenSize.height-size.height)/2);setVisible(true);}publicvoidopenSplash(){setCursor(newCursor(Cursor.WAIT_CURSOR));initSplash();}publicvoidfinish(){setVisible(false);dispose();}publicvoidpaint(Graphicsg){// Apenas desenha a nossa mensagem em cima da imagemg.drawImage(splashImage,0,0,getBackground(),this);g.setFont(newFont("Arial",Font.BOLD,26));g.drawString(message,(int)(splashImage.getWidth(this)/2)-80,30);}publicvoidupdateProgressBar(Observableo,Objectarg){if(arginstanceofInteger){//Seta o valor do progressobarradeprogresso.setValue(((Integer)arg).intValue());// texto.setText( String.valueOf(((Integer) arg).intValue()));}elseif(arginstanceofBoolean){if(((Boolean)arg).booleanValue()){barradeprogresso.setValue(0);}}}}
O erro está ocorrendo dentro do método initSplash().