[Duvida] QuizCard

5 respostas
T
Estou estudando o livro use a cabeça java e me deparei com um erro em um código:
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.io.*;

public class QuizCardBuilder{
private JTextArea question;
private JTextArea answer;
private ArrayList<QuizCard> cardList;
private JFrame frame;

public static void main(String[] args){
QuizCardBuilder builder = new QuizCardBuilder();
builder.go();
}

public void go(){
frame = new JFrame("Quiz Card Builder");
JPanel mainPanel = new JPanel();
Font bigFont = new Font("sanserif", Font.BOLD, 24);
question = new JTextArea(6,20);
question.setLineWrap(true);
question.setWrapStyleWord(true);
question.setFont(bigFont);
JScrollPane qScroller = new JScrollPane(question);
qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

answer = new JTextArea(6,20);
answer.setLineWrap(true);
answer.setWrapStyleWord(true);
answer.setFont(bigFont);

JScrollPane aScroller = new JScrollPane(answer);
aScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
aScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

JButton nextButton = new JButton("Next card");
cardList = new ArrayList<QuizCard>();

JLabel qLabel = new JLabel("Question:");
JLabel aLabel = new JLabel("Answer");

mainPanel.add(qLabel);
mainPanel.add(qScroller);
mainPanel.add(aLabel);
mainPanel.add(aScroller);
mainPanel.add(nextButton);
nextButton.addActionListener(new NextCardListener());
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenuItem newMenuItem = new JMenuItem("New");
JMenuItem saveMenuItem = new JMenuItem("Save");
newMenuItem.addActionListener(new NewMenuListener());
saveMenuItem.addActionListener(new SaveMenuListener());
fileMenu.add(newMenuItem);
fileMenu.add(saveMenuItem);
menuBar.add(fileMenu);
frame.setJMenuBar(menuBar);
frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
frame.setSize(500, 600);
frame.setVisible(true);
}
public class NextCardListener implements ActionListener{
 public void actionPerformed(ActionEvent ev){
 QuizCard card = new QuizCard(question.getText(), answer.getText());
 cardList.add(card);
 clearCard();
  
 }
}

public class SaveMenuListener implements ActionListener{
 public void actionPerformed(ActionEvent ev){
 QuizCard card = new QuizCard(question.getText(), answer.getText());
 cardList.add(card);
 
 JFileChooser fileSave = new JFileChooser();
 fileSave.showSaveDialog(frame);
 saveFile(fileSave.getSelectedFile());
 }
}

public class NewMenuListener implements ActionListener{
public void actionPerformed(ActionEvent ev){
cardList.clear();
clearCard();
}
}
private void clearCard(){
question.setText("");
answer.setText("");
question.requestFocus();
}

private void saveFile(File file){
try{
 BufferedWrite writer = new BufferedWriter(new FileWriter(file));
 for(QuizCard card: cardList){
 writer.write(card.getQuestion()+"/");
 writer.write(card.getAnswer()+"\n");
 
 }
 writer.close();
}catch(IOException ex){
System.out.println("nao foi possivel escrever cardlist");
ex.printStackTrack();
}

}
}

e com o Seguinte erro:
[img]http://img62.imageshack.us/img62/4075/erro2y.jpg[/img]
QuizCard não é uma classe de java.io?
eu importei corretamente

5 Respostas

mapleplayer

Pelo erro parece que o compilador não consegue achar a definição de QuizCard, veja se existe essa classe no seu projeto e importe ela se necessario.

Outros erros que eu vi são :

  • você tenta usar um BufferedWriter mas declara um BufferedWrite
  • você tenta usar o método printStackTrace() mas declara tal como sendo um printStackTrack

espero ter ajudado

joaodaniel

Pera aí, QuizCard uma classe de java.io? Acho que não cara. Possívelmente esta classe está relacionada ao exercício e vc deve construir ela.
Caso tenha esse tipo de dúvida, acesse a API. É bom sempre trabalhar com a API aberta para esse tipo de consulta.

T

Os erros printStackTrace() e BufferedWriter esqueci de resolver antes de postar.
Acontece que no livro não existe nenhum demonstrativo da classe QuizCard, simplesmente é posto um código com ela sem ao menos citar nada a respeito.
Pelo menos eu não achei aqui :shock: .
Alguem lembra desse exemplo?

Francisco_Silva
Ja li o livro e não existe nenhum exemplo de código para essa classe Não é um erro do livro, na verdade o livro propõe que o próprio leitor a implemente a partir de um diagrama de classe

Classe: QuizCard

Construtor: QuizCard(q,a);

Atributos: question, answer;

métodos; getQuestion(), getAnswer();

Se sua versão for a traduzida… veja na pagina 315.

T
<blockquote><div class="quote-author">Francisco Silva:</div>Ja li o livro e não existe nenhum exemplo de código para essa classe… Não é um erro do livro, na verdade o livro propõe que o próprio leitor a implemente a partir de um diagrama de classe…

Classe: QuizCard

Construtor: QuizCard(q,a);

Atributos: question, answer;

métodos; getQuestion(), getAnswer();

Se sua versão for a traduzida… veja na pagina 315.

Obrigado não sabia que essa classe tinha que ser feita

Criado 22 de janeiro de 2011
Ultima resposta 23 de jan. de 2011
Respostas 5
Participantes 4