Anda di halaman 1dari 5

/* import import import import import

java.util.*; java.awt.event.*; javax.swing.*; java.awt.*; java.io.*;

public class QuizCardPlayer{ private JTextArea display; private JTextArea answer; private ArrayList <QuizCard> cardList; private QuizCard currentCard; private int currentCardIndex; private JFrame frame; private JButton nextButton; private boolean isShowAnswer; public static void main( String[] args ){ QuizCardPlayer reader = new QuizCardPlayer(); reader.go(); } public void go(){ // Constroi e exibe a GUI frame = new JFrame( "Quiz Card Player" ); JPanel mainPanel = new JPanel(); Font bigFont = new Font( "sanserif", Font.BOLD, 24 ); display = new JTextArea( 10, 20 ); display.setFont( bigFont ); display.setLineWrap( true ); display.setEditable( false ); JScrollPane qScroller = new JScrollPane( display ); qScroller.setVerticalScrollBarPolicy( ScrollPaneConstants.VERTICAL_SCROLLBAR _ALWAYS ); qScroller.setHorizontalScrollBarPolicy( ScrollPaneConstants.HORIZONTAL_SCROL LBAR_NEVER ); nextButton = new JButton( "Show Question" ); mainPanel.add( qScroller ); mainPanel.add( nextButton ); nextButton.addActionListener( new NextCardListener() ); JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu( "Ficheiro" ); JMenuItem loadMenuItem = new JMenuItem( "Load card set" ); loadMenuItem.addActionListener( new OpenMenuListener() ); fileMenu.add( loadMenuItem ); menuBar.add( fileMenu ); frame.setJMenuBar( menuBar ); frame.getContentPane().add( BorderLayout.CENTER, mainPanel ); frame.setSize( 640, 500 ); frame.setVisible( true );

} // Classe interna, acionada quando o utilizador clicar no boto 'Prximo Carto' // Significa que o utilizador pretende guardar esse carto na lista e iniciar um novo carto private class NextCardListener implements ActionListener{ public void actionPerformed( ActionEvent ev ){ // Adiciona o carto atual lista e limpa as reas de texto if( isShowAnswer ){ display.setText( currentCard.getAnswer() ); nextButton.setText( "Next Card" ); isShowAnswer = false; } else { if( currentCardIndex < cardList.size() ){ showNextCard(); } else { display.setText( "That was last card" ); nextButton.setEnabled( false ); } } } } public class OpenMenuListener implements ActionListener{ public void actionPerformed( ActionEvent ev ){ JFileChooser fileOpen = new JFileChooser(); fileOpen.showOpenDialog( frame ); loadFile( fileOpen.getSelectedFile() ); } } private void loadFile( File file ){ cardList = new ArrayList<QuizCard>(); try{ BufferedReader reader = new BufferedReader( new FileReader( file ) ); String line = null; while( ( line = reader.readline() ) != null ){ makeCard( line ); } reader.close(); } catch( Exception ex ){ System.out.println( "couldn't read the card file" ); ex.printStackTrace(); } showNextCard(); } private void makeCard( String lineToParse ){ String[] result = lineToParse.split( "/" ); QuizCard card = new QuizCard( result[0], result[1] ); cardList.add( card ); System.out.println( "made a card" ); }

private void showNextCard(){ currentCard = cardList.get( currentCardIndex ); currentCardIndex++; display.setText( currentCard.getQuestion() ); nextButton.setText( "Show Answer" ); isShowAnswer = true; } } */ import javax.swing.*; import java.util.*; import java.awt.*; import java.awt.event.*; import java.io.*; /** * User: Ross P. Goldberg */ public class QuizCardReader { private JTextArea question; private JTextArea typeIn; private JTextArea answer; private HashSet cardHashSet; private QuizCard currentCard; private JFrame frame; private JButton nextButton; private boolean isShowAnswer; public void go() { frame = new JFrame("Quiz Card Player"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel mainPanel = new JPanel(); Font bigFont = new Font("arial",Font.BOLD,14); JLabel questionLabel = new JLabel("Question:"); question = new JTextArea(8,40); question.setFont(bigFont); question.setLineWrap(true); question.setWrapStyleWord(true); question.setEditable(false); question.setBackground(Color.LIGHT_GRAY); JScrollPane qQuestionScroller = new JScrollPane(question); qQuestionScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICA L_SCROLLBAR_ALWAYS); qQuestionScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZ ONTAL_SCROLLBAR_NEVER); JLabel typeInLabel = new JLabel("Type in your answer:"); typeIn = new JTextArea(8,40); typeIn.setFont(bigFont); typeIn.setLineWrap(true); typeIn.setWrapStyleWord(true); typeIn.setEditable(true); JScrollPane qTypeInScroller = new JScrollPane(typeIn); qTypeInScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_ SCROLLBAR_ALWAYS); qTypeInScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZON TAL_SCROLLBAR_NEVER); JLabel answerLabel = new JLabel("Answer:"); answer = new JTextArea(8, 40); answer.setFont(bigFont); answer.setLineWrap(true); answer.setWrapStyleWord(true);

answer.setEditable(false); answer.setBackground(Color.LIGHT_GRAY); JScrollPane qAnswerScroller = new JScrollPane(answer); qAnswerScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_ SCROLLBAR_ALWAYS); qAnswerScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZON TAL_SCROLLBAR_NEVER); nextButton = new JButton("Show Question"); mainPanel.add(questionLabel); mainPanel.add(qQuestionScroller); mainPanel.add(typeInLabel); mainPanel.add(qTypeInScroller); mainPanel.add(answerLabel); mainPanel.add(qAnswerScroller); mainPanel.add(nextButton); nextButton.addActionListener(new NextCardListener()); JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("File"); JMenuItem loadMenuItem = new JMenuItem("Load Card Set"); loadMenuItem.addActionListener(new OpenMenuListener()); fileMenu.add(loadMenuItem); menuBar.add(fileMenu); frame.setJMenuBar(menuBar); frame.getContentPane().add(BorderLayout.CENTER,mainPanel); frame.setSize(530,590); frame.setVisible(true); //frame.pack(); } public class NextCardListener implements ActionListener { /** * Invoked when an action occurs. */ public void actionPerformed(ActionEvent ev) { if (isShowAnswer) { answer.setText(currentCard.getAnswer()); nextButton.setText("Next Card"); isShowAnswer = false; } else { // delete the current card cardHashSet.remove(currentCard); checkCards(); } } } public void checkCards() { // show the next question if (!cardHashSet.isEmpty()) { nextButton.setEnabled(true); typeIn.setText(""); answer.setText(""); showNextCard(); } else { // there are no more cards question.setText("That was the last card."); typeIn.setText(""); answer.setText(""); nextButton.setEnabled(false); } } public class OpenMenuListener implements ActionListener {

/** * Invoked when an action occurs. */ public void actionPerformed(ActionEvent ev) { JFileChooser fileOpen = new JFileChooser(); fileOpen.showOpenDialog(frame); loadFile(fileOpen.getSelectedFile()); } } private void loadFile(File file) { cardHashSet = new HashSet(); try { BufferedReader reader = new BufferedReader(new FileReader(file)); String line = null; while ((line = reader.readLine()) != null) { makeCard(line); } reader.close(); } catch (Exception ex) { ex.printStackTrace(); } checkCards(); } private void makeCard(String lineToParse) { StringTokenizer parser = new StringTokenizer(lineToParse, "/"); if (parser.hasMoreTokens()) { QuizCard card = new QuizCard(parser.nextToken(), parser.nextToken()); cardHashSet.add(card); } } private void showNextCard() { currentCard = (QuizCard) cardHashSet.toArray() [(int) (Math.random() * c ardHashSet.size())]; question.setText(currentCard.getQuestion()); nextButton.setText("Show Answer"); isShowAnswer = true; } }

Anda mungkin juga menyukai