1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda básica em Java

Discussão em 'Programação' iniciada por Jotahaka, 24 de Outubro de 2012. (Respostas: 8; Visualizações: 1191)

  1. Jotahaka

    Jotahaka Power Member

    Boas pessoal estou aqui com uma dúvida bastante básica, a meu ver, quero abrir um ficheiro atraves de um jMenu utilizando o filechooser e colocar o conteudo desse ficheiro numa jTable.
    O projecto é a criação de um puzzle de 8 peças, ao gravar ele guarda as posições das peças, e o objectivo é que quando abrir o ficheiro ele copie as posições guardadas para a jTable.

    É algo urgente, agradeço a vossa ajuda!

    Código:
    //Função que grava
    private void jMenuItemGravarActionPerformed(java.awt.event.ActionEvent evt) {                                                        
       BufferedWriter bw = null;
            try {
                JFileChooser fc = new JFileChooser();
                int result = fc.showSaveDialog(this);
                if (result == JFileChooser.APPROVE_OPTION) {
                    File f = fc.getSelectedFile();
                    bw = new BufferedWriter(new FileWriter(f));
                    bw.write(puzzle.toString());
                }
            } catch (FileNotFoundException fnf) {
                JOptionPane.showMessageDialog(new JFrame(), "Ficheiro não encontrado!", "ERRO", JOptionPane.ERROR_MESSAGE);
            } catch (IOException io1) {
                JOptionPane.showMessageDialog(new JFrame(), "Impossivel gravar ficheiro!", "ERRO", JOptionPane.ERROR_MESSAGE);
            } finally {
                try {
                    if (bw != null) {
                        bw.close();
                    }
                } catch (IOException io2) {
                    JOptionPane.showMessageDialog(new JFrame(), "Stream não fechada!", "ERRO", JOptionPane.ERROR_MESSAGE);
                }
            }
        }                                               
        
    //Função que abre, a duvida está AQUI!
        private void jMenuItemAbrirActionPerformed(java.awt.event.ActionEvent evt) {                                               
            BufferedReader br = null;
            try {
                JFileChooser fc = new JFileChooser();
                int result = fc.showOpenDialog(this);
                if (result == JFileChooser.APPROVE_OPTION) {
                    File f = fc.getSelectedFile();
                    br = new BufferedReader(new FileReader(f));
                    String linha;
                    linha = br.readLine();
                }
            } catch (FileNotFoundException fnf) {
                JOptionPane.showMessageDialog(new JFrame(), "Ficheiro não encontrado!", "ERRO", JOptionPane.ERROR_MESSAGE);
            } catch (IOException io1) {
                JOptionPane.showMessageDialog(new JFrame(), "Impossivel gravar ficheiro!", "ERRO", JOptionPane.ERROR_MESSAGE);
            } finally {
                try {
                    if (br != null) {
                        br.close();
                    }
                } catch (IOException io3) {
                    JOptionPane.showMessageDialog(new JFrame(), "Stream não fechada!", "ERRO", JOptionPane.ERROR_MESSAGE);
                }
            }
            
        }                          
    
     
  2. Não percebo a tua dúvida.
    Olhei para o teu código umas poucas de vezes e parece a estar tudo bem, falta só a parte de pegares na "linha" e criares um objecto Puzzle a partir dela.
    Podias até ter um construtor que recebia a string e fazia o inverso do tal "toString", assumindo que alteraste o toString para devolver uma string com o que te dá jeito.

    Mas tens algum erro?
    Ou é só mesmo nessa ultima parte que tens a dúvida?
     
  3. Hi World!

    Hi World! Power Member

    Penso que seria apropriado ler, em primeiro lugar, o que o jTable permite e, aí sim, perguntar algo...
     
  4. Jotahaka

    Jotahaka Power Member

    Não tenho erro nenhum, simplesmente não está a passar as posições das peças do puzzle, que estão guardadas no txt, para a jTable não fazendo qualquer modificação no mesmo.
     
  5. Suponho que a tua jTable tem um tableModel. Depois de ler o ficheiro, modificas o tableModel e fazes tableModel.fireTableDataChanged() para veres as modificações.
     
  6. Hi World!

    Hi World! Power Member

    Mas isso é porque descartas logo o StringBuffer e não fazes nada após isso (isto pelo código que estás a dar).

    Daí dizer que a melhor coisa a fazer é ler a documentação da jTable.
     
  7. kikoff

    kikoff Power Member

    Tenho uma dúvida em java também.
    Tou a fazer um exercicio que vai adicionando pontos ao cartão quando se mete gasolina. A cena é que ao contrário dos outros exercicios eu não quero fazer pontos++, porque isso adiciona o numero de pontos mais 1, e não é isso que queria. Ele tem que adicionar os pontos que ja lá estão + os pontos do próximo carregamento e assim sucessivamente. Não tou a conseguir fazer isso :/
     
  8. dagas46

    dagas46 Power Member

    pontos = pontos + carregamento
     
  9. kikoff

    kikoff Power Member

    Não é assim tão simples, porque o "carregamento" são os litros que depois são convertidos para pontos. Tou com dúvidas nesta parte do código:
    public void supplyGas(float amountLiters)
    {
    resto=numAbastecimentos%NUMERO;
    pontostotais=pontosextra+pontosnormais
    if(resto==0)
    {
    pontosextra=Math.round(amountLiters*DESCONTO+(numAbastecimentos/NUMERO)*DESCONTO2);
    numAbastecimentos++;
    pontosextra=pontostotais+pontosextra;
    }
    else if(resto!=0)
    {
    pontosnormais=Math.round(amountLiters*DESCONTO);
    numAbastecimentos++;
    pontosnormais=pontostotais+pontosnormais;
    }

    O objectivo é cada abastecimento os pontos são 20% dos litros. E a cada 5 tem que fazer a média dos últimos 5 abastecimentos vezes 0.50 + 0.20 vezes o 5º carregamento.
    O que não tou a conseguir fazer é somar os pontos. Por exemplo, abasteço 20 litros, recebo 4 pontos, depois a seguir abasteço mais 20, e tinha q somar a esses 4 mais 4.


    EDIT: Esqueçam, erro noob... ja resolvi o problem.(compliquei o código sem necessidade)
     
    Última edição: 29 de Outubro de 2012

Partilhar esta Página