Sou iniciante em Java, e estou executar o comando:
Container contentPane = getContentPane();
Eu copiei esta linha de um exemplo de como criar uma ProgressBar.
Nas demais linhas deste exemplo não deu erro, só nesta linha está dando erro que o método getContentPane() não existe.
Eu procurei na documentação e não achei nada sobre este método.
O que preciso fazer para que possa utilizá-lo?
É 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
Aqui vai a minha classe:
package bomgourmet;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.Cursor;
import javax.swing.*;
import javax.swing.event.*;
import java.util.Observable;
public class Splash extends Window
{
// Mensagem a ser mostrada junto com a imagem
private final String message = "Splash Screen";
// Barra de progressão
private JProgressBar barradeprogresso;
// Imagem que ira aparecer no Splash
private final String imgName = "src/bomgourmet/splash.jpg";
Image splashImage;
Toolkit toolkit;
private static Splash splash;
// Singleton pra garantir apenas uma unica instancia na memoria
static {
splash = new Splash();
}
private Splash()
{
super(new Frame());
setVisible(false);
splashImage = null;
toolkit = Toolkit.getDefaultToolkit();
}
public static Splash getInstance()
{
return splash;
}
private void initSplash()
{
// Carrega a imagem na memoria
MediaTracker media = new MediaTracker(this);
splashImage = toolkit.getImage(imgName);
if (splashImage != null) {
media.addImage(splashImage, 0);
try {
media.waitForID(0);
}
catch (InterruptedException ie) {}
}
// Configura o tamanho do splash e a posicao na tela
setSize(splashImage.getWidth(this), splashImage.getHeight(this));
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension size = getSize();
if (size.width > screenSize.width)
size.width = screenSize.width;
if (size.height > screenSize.height)
size.height = screenSize.height;
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
barradeprogresso = new JProgressBar();
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);
}
public void openSplash()
{
setCursor(new Cursor(Cursor.WAIT_CURSOR));
initSplash();
}
public void finish()
{
setVisible(false);
dispose();
}
public void paint(Graphics g)
{
// Apenas desenha a nossa mensagem em cima da imagem
g.drawImage(splashImage, 0, 0, getBackground(), this);
g.setFont(new Font("Arial", Font.BOLD, 26));
g.drawString(message, (int)(splashImage.getWidth(this) / 2) - 80, 30);
}
public void updateProgressBar(Observable o, Object arg) {
if(arg instanceof Integer) {
//Seta o valor do progresso
barradeprogresso.setValue( ((Integer) arg).intValue());
// texto.setText( String.valueOf(((Integer) arg).intValue()));
} else if(arg instanceof Boolean) {
if( ((Boolean) arg).booleanValue() ) {
barradeprogresso.setValue(0);
}
}
}
}
O erro está ocorrendo dentro do método initSplash().
Extenda JPanel ao invés de Window
[]s