Pessoal, estou travado com isso aqui.
Usei exemplos de varios lugares, até aqui mesmo, e nada.
vejam só.
private void abrirArquivo(){
ObjectInputStream input = null;
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.CANCEL_OPTION)
return;
File fileName = fileChooser.getSelectedFile();
if(fileName == null || fileName.getName().equals(""))
JOptionPane.showMessageDialog(this, "Nome de Aquivo Invalido", "Nome de Aquivo Invalido",
JOptionPane.ERROR_MESSAGE);
else{
try{
input = new ObjectInputStream(new BufferedInputStream(new FileInputStream(fileName)));
lDesenhos = (ArrayList) input.readObject();
this.repaint();
input.close();
}
catch(IOException ioException){
JOptionPane.showMessageDialog(this, "Aquivo não Existe",
"Nome de Aquivo Invalido", JOptionPane.ERROR_MESSAGE);
}
}
}
A lista de desenhos foi declarada para receber objetos de uma classe q eu defini.
private ArrayList<Shapes> lDesenhos = new ArrayList <Shapes>();
Eu quero copiar os dados do arquivo nessa lista de desenhos, que depois serão recolocados na tela.
Só que nessa linha, está dando um erro.
[/code] lDesenhos = (ArrayList) input.readObject();[code]
[color=blue] Z:\Java\Whiteboard\wb3.851\Whiteboard\src\formatos\Whiteboard.java:490: [/color][color=red]
unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
lDesenhos = (ArrayList) input.readObject();
Note: Z:\Java\Whiteboard\wb3.851\Whiteboard\src\formatos\Whiteboard.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.[/color]
O que estou fazendo de Errado?
A classe dos Objetos tipo Shapes para tirar duvidas
[code]import java.awt.Color;
import java.awt.Graphics;
import java.io.Serializable;
/**
-
Classe que representa as diferentes formas geométricas.
-
@author Pedro Fattore
*/
public abstract class Shapes implements Serializable {
/**
- Variável que determina a grossura do desenho
/
protected int largura;
/*
- Variável que determina a cor do traçado do desenho
*/
protected java.awt.Color cor;
protected boolean alteracao;
/**
- Função para armazenar os pontos enquanto o mouse se move
-
@param y Representa a coordenada y do ponto
-
@param x Representa a coordenada x do ponto
*/
public abstract void tracadoMouse( int x, int y);
/**
- Função para armazenar o ponto quando o botao do mouse for pressionado
-
@param y Representa a coordenada Y do ponto
-
@param x Representa a coordenada X do ponto
*/
public abstract void precionaMouse( int x, int y);
/**
- Função para armazenar o ponto quando o botao do mouse for solto
-
@param y Representa a coordenada Y do ponto
-
@param x Representa a coordenada X do ponto
*/
public abstract void soltaMouse( int x, int y);
/**
- Funcao que retorna a coordenada X do ponto de determinada posicao do vetor
-
@param posicao Determina de qual ponto sera a coordenada retornada
-
@return Retorna a coordenada X
*/
public abstract int getX( int posicao );
/**
- Funcao que retorna a coordenada Y do ponto de determinada posicao do vetor
-
@param posicao Determina de qual ponto sera a coordenada retornada
-
@return Retorna a coordenada Y
*/
public abstract int getY( int posicao );
/**
- Função que atribui as coordenadas de um ponto a uma determinada posição do vetor
-
@param x Coordenada X do ponto a ser armazenado
-
@param posicao Determina a posicao que as coordenadas devem ser armazenadas
-
@param y Coordenada Y do ponto a ser armazenado
*/
public abstract void setPonto(int posicao, int x, int y);
/**
- Função que desenha a figura
-
@param g Variavel que representa a figura
*/
public abstract void desenho(Graphics g);
/**
- Verifica se o ponto pertence ou não ao traçado da figura
-
@param x Valor da coordenada X do ponto
-
@param y Valor da coordenada Y do ponto
-
@return Retorna Verdadeiro ou Falso
/
public abstract boolean pPertence(int x, int y);
/*
- Define a cor do desenho
-
@param nCor a cor escolhida para o traçado
*/
public void setCor(java.awt.Color nCor){
cor = nCor;
}
/**
- Define a largura do traçado do desenho, usando parametros entre 1 e 50
-
@param valor Tamanho da largura
/
public void setLargura(int valor){
largura = valor;
}
/*
- Retorna a largura do desenho
*@return largura
*/
public int getLargura(){
return largura;
}
/**
- Retorna a cor do desenho
-
@return Cor do desenho
*/
Color getColor() {
return cor;
}
/**
- Construtor da classe
*/
public Shapes(){
}
}[/code]
Leia a mensagem de erro:
unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
Essa mensagem de erro diz que você deveria ter um try…catch para pegar a ClassNotFoundException ou então você deve adicionar uma cláusula throws no seu método. Isso porque provavelmente o seu método readObject lança essa exceção.