Como abrir um arquivo de ArrayList?

2 respostas
D

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?

2 Respostas

D

A classe dos Objetos tipo Shapes para tirar duvidas

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(){
  
   }
}
ViniGodoy

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.

Criado 4 de novembro de 2007
Ultima resposta 4 de nov. de 2007
Respostas 2
Participantes 2