A
AVR
Gast
Hallo,
Habe eine Frage zu einer Anwendung aus einem Buch, das wahrscheinlich viele von Euch kennen.
In der Anwendung gibt es drei Klassen, wobei eine von diesen selbst geschrieben werden müsste.
Habe die Themen die bis dahin erklärt wurden in Betracht gezogen, und auch schon ausprobiert zu coden, aber es fehlt vielleicht etwas?
Die unteren zwei Klassen sind vorgeschrieben, die dritte müsste man anhand von :
Konstruktor: [c] QuizKarte(f, a)[/c] , Variablen: [c]frage, antwort[/c] , Methoden: [c]getFrage() , getAntwort()[/c], erstellen.
Mit dieser werden die Karten erstellt.
Mit dieser werden die Karten abgepielt.
Vielen Dank
O.
Habe eine Frage zu einer Anwendung aus einem Buch, das wahrscheinlich viele von Euch kennen.
In der Anwendung gibt es drei Klassen, wobei eine von diesen selbst geschrieben werden müsste.
Habe die Themen die bis dahin erklärt wurden in Betracht gezogen, und auch schon ausprobiert zu coden, aber es fehlt vielleicht etwas?
Die unteren zwei Klassen sind vorgeschrieben, die dritte müsste man anhand von :
Konstruktor: [c] QuizKarte(f, a)[/c] , Variablen: [c]frage, antwort[/c] , Methoden: [c]getFrage() , getAntwort()[/c], erstellen.
Mit dieser werden die Karten erstellt.
Java:
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.io.*;
public class QuizKartenAutor {
private JTextArea frage;
private JTextArea antwort;
private ArrayList<QuizKarte> kartenListe;
private JFrame frame;
public static void main(String[] args) {
QuizKartenAutor editor = new QuizKartenAutor();
editor.los();
}
public void los() {
frame = new JFrame("Quizkarten-Autor");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel mainPanel = new JPanel();
Font bigFont = new Font("sanserif", Font.BOLD, 24);
frage = new JTextArea(6,20);
frage.setLineWrap(true);
frage.setWrapStyleWord(true);
frage.setFont(bigFont);
JScrollPane fScroller = new JScrollPane(frage);
fScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
fScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
antwort = new JTextArea(6,20);
antwort.setLineWrap(true);
antwort.setWrapStyleWord(true);
antwort.setFont(bigFont);
JScrollPane aScroller = new JScrollPane(antwort);
aScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
aScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
JButton nächsteKarteButton = new JButton("Nächste Karte");
kartenListe = new ArrayList<QuizKarte>();
JLabel fLabel = new JLabel("Die Frage lautet:");
JLabel aLabel = new JLabel("Die Antwort lautet:");
mainPanel.add(fLabel);
mainPanel.add(fScroller);
mainPanel.add(aLabel);
mainPanel.add(aScroller);
mainPanel.add(nächsteKarteButton);
nächsteKarteButton.addActionListener(new NächsteKarteListener());
JMenuBar menüleiste = new JMenuBar();
JMenu menüDatei = new JMenu("Datei");
JMenuItem menüPunktNeu = new JMenuItem("Neu");
JMenuItem menüPunktSpeichern = new JMenuItem("Speichern");
menüPunktNeu.addActionListener(new MenüNeuListener());
menüPunktSpeichern.addActionListener(new MenüSpeichernListener());
menüDatei.add(menüPunktNeu);
menüDatei.add(menüPunktSpeichern);
menüleiste.add(menüDatei);
frame.setJMenuBar(menüleiste);
frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
frame.setSize(500,600);
frame.setVisible(true);
}
public class NächsteKarteListener implements ActionListener {
public void actionPerformed(ActionEvent ev) {
QuizKarte karte = new QuizKarte(frage.getText(), antwort.getText());
kartenListe.add(karte);
karteAbräumen();
}
}
public class MenuSpeichernListener implements ActionListener {
public void actionPerformed(ActionEvent ev) {
QuizKarte karte = new QuizKarte(frage.getText(), antwort.getText());
kartenListe.add(karte);
JFileChooser dateiWahl = new JFileChooser();
dateiWahl.showSaveDialog(frame);
dateiSpeichern(dateiWahl.getSelectedFile());
}
}
public class MenuNeuListener implements ActionListener {
public void actionPerformed(ActionEvent ev) {
kartenListe.clear();
karteAbräumen();
}
}
private void karteAbräumen() {
frage.setText("");
antwort.setText("");
frage.requestFocus();
}
private void dateiSpeichern(File datei) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(datei));
for(QuizKarte karte:kartenListe) {
writer.write(karte.getFrage() + "/");
writer.write(karte.getAntwort() + "\n");
}
writer.close();
} catch(IOException ex) {
System.out.print("konnte die Kartenliste nicht schreiben");
ex.printStackTrace();
}
}
}
Mit dieser werden die Karten abgepielt.
Java:
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.io.*;
public class QuizKartenPlayer {
private JTextArea anzeige;
private ArrayList<QuizKarte> kartenListe;
private QuizKarte aktuelleKarte;
private int aktuelleKarteIndex;
private JFrame frame;
private JButton nächsteKarteButton;
private boolean istAntwortAngezeigt;
public static void main(String[] args) {
QuizKartenPlayer reader = new QuizKartenPlayer();
reader.los();
}
public void los() {
frame = new JFrame("Quizkarten-Player");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel hauptPanel = new JPanel();
Font bigFont = new Font("sanserif", Font.BOLD, 24);
anzeige = new JTextArea(10,20);
anzeige.setFont(bigFont);
anzeige.setLineWrap(true);
anzeige.setEditable(false);
JScrollPane fScroller = new JScrollPane(anzeige);
fScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
fScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
nächsteKarteButton = new JButton("Frage zeigen");
hauptPanel.add(fScroller);
hauptPanel.add(nächsteKarteButton);
nächsteKarteButton.addActionListener(new NächsteKarteListener());
JMenuBar menüleiste = new JMenuBar();
JMenu menüDatei = new JMenu("Datei");
JMenuItem menüPunktLaden = new JMenuItem("Kartensatz laden");
menüPunktLaden.addActionListener(new MenüÖffnenListener());
menüDatei.add(menüPunktLaden);
menüleiste.add(menüDatei);
frame.setJMenuBar(menüleiste);
frame.getContentPane().add(BorderLayout.CENTER, hauptPanel);
frame.setSize(500,600);
frame.setVisible(true);
}
public class NächsteKarteListener implements ActionListener {
public void actionPerformed(ActionEvent ev) {
if (isAntwortAngezeigt) {
anzeige.setText(aktuelleKarte.getAntwort());
nächsteKarteButton.setText("Nächste Karte");
istAntwortAngezeigt = false;
} else {
if(aktuelleKarteIndex < kartenListe.size()) {
nächsteKarteZeigen();
} else {
anzeige.setText("Das war die letzte Karte.");
nächsteKarteButton.setEnabled(false);
}
}
}
}
public class MenüÖffnenListener implements ActionListener {
public void actionPerformed(ActionEvent ev) {
JFileChooser dateiÖffnen = new JFileChooser();
dateiÖffnen.showOpenDialog(frame);
dateiLaden(dateiÖffnen.getSelectedFile());
}
}
private void dateiLaden(File datei) {
kartenListe = new ArrayList<QuizKarte>();
try {
BufferedReader reader = new BufferedReader(new FileReader(datei));
String zeile = null;
while((zeile = reader.readLine()) != null) {
karteErstellen(zeile);
}
reader.close();
} catch(Exception ex) {
System.out.println("konnte Kartendatei nicht lesen");
ex.printStackTrace();
}
nächsteKarteZeigen();
}
private void karteErstellen(String zuParsendeZeile) {
String[] ergebnis = zuParsendeZeile.split("/");
QuizKarte karte = new QuizKarte(ergebnis[0], ergebnis[1]);
kartenListe.add(karte);
System.out.println("Karte erstellt");
}
private void nächsteKarteZeigen() {
aktuelleKarte = kartenListe.get(aktuelleKarteIndex);
aktuelleKarteIndex++;
anzeige.setText(aktuelleKarte.getFrage());
nächsteKarteButton.setText("Antwort zeigen");
istAntwortAngezeigt = true;
}
}
Vielen Dank
O.