Hallo liebe Forum-User,
ich bin noch ein Anfänger in Bezug auf Java und neu hier im Forum. Ich will zu Übungszwecken ein kleines Karteikartenprogramm erstellen.
Ich möchte ein Java Programm erstellen, dass einen Text einliest und mir daraus Karteikarten zum Lernen erstellt.
Die Vorderseite der Karteikarte wird im Text durch ein #-Zeichen symbolisiert.
Dadurch soll diese Zeile mit dem #Zeichen als vorderseite und die rueckseite mit dem restlichen Text initialisiert werden bis wieder ein #Zeichen auftritt.
Das funktioniert auch schon soweit.
Nun will ich als nächsten Schritt eine kleine grafische Oberfläche erstellen.
Diese soll immer durch einen Klick auf einen Button ausgelöst, Vorder und Rückseite der Karteikarte anzeigen.(also eine kleine Abfrage zum lernen darstellen)
Und da ist jetzt auch mein Problem:
Ich habe eine Klasse "GUI" angelegt, in der meine "grafische Oberfläche" erstellt wird.
(das habe ich mir abegugckt aus einem Internet-tutorial, welches eigentlich einen Button erstellt, der durch einen klick eine hochlaufende Zahl anzeigt)
Doch wie kann ich der Klasse GUI mein array karteikarten übergeben (mit dem GUI-Konstruktor hat das nicht funktioniert) oder in der GUI Klasse auf das Array karteikarte mit den Attributen zugreifen.
Ich bin mir da nicht sicher ob man das über Vererbung oder Interfaces machen kann oder ob ich meine Klassen grundsätzlich anders strukturieren muss.
Es wäre super, wenn ihr mir Tipps oder Ideen geben könntet wie ich das umsetzen kann.
Viele Grüße
java-wing
ich bin noch ein Anfänger in Bezug auf Java und neu hier im Forum. Ich will zu Übungszwecken ein kleines Karteikartenprogramm erstellen.
Ich möchte ein Java Programm erstellen, dass einen Text einliest und mir daraus Karteikarten zum Lernen erstellt.
Die Vorderseite der Karteikarte wird im Text durch ein #-Zeichen symbolisiert.
Dadurch soll diese Zeile mit dem #Zeichen als vorderseite und die rueckseite mit dem restlichen Text initialisiert werden bis wieder ein #Zeichen auftritt.
Das funktioniert auch schon soweit.
Nun will ich als nächsten Schritt eine kleine grafische Oberfläche erstellen.
Diese soll immer durch einen Klick auf einen Button ausgelöst, Vorder und Rückseite der Karteikarte anzeigen.(also eine kleine Abfrage zum lernen darstellen)
Und da ist jetzt auch mein Problem:
Ich habe eine Klasse "GUI" angelegt, in der meine "grafische Oberfläche" erstellt wird.
(das habe ich mir abegugckt aus einem Internet-tutorial, welches eigentlich einen Button erstellt, der durch einen klick eine hochlaufende Zahl anzeigt)
Doch wie kann ich der Klasse GUI mein array karteikarten übergeben (mit dem GUI-Konstruktor hat das nicht funktioniert) oder in der GUI Klasse auf das Array karteikarte mit den Attributen zugreifen.
Ich bin mir da nicht sicher ob man das über Vererbung oder Interfaces machen kann oder ob ich meine Klassen grundsätzlich anders strukturieren muss.
Es wäre super, wenn ihr mir Tipps oder Ideen geben könntet wie ich das umsetzen kann.
Viele Grüße
java-wing
Java:
import java.io.*;
public class Einlesen {
/* Diese Klasse soll das Einlesen aus einer Text-Datei übernehmen.
Dabei wird immer da wo ein #-Zeichen im eingelesenen Text-Dokument steht,
der Konstruktor von Karteikarte aufgerufen und damit das Array karteikarte
mit jeweils dem Attribut vorderseite sowie rueckseite initialisiert.
Zu Testzwecken wird nun in der Konsole einmal das Attribut vorder bzw. rueckseite ausgegeben
*/
public static void main(String[] ars) throws IOException {
FileReader fr = new FileReader("text.txt");
BufferedReader br = new BufferedReader(fr);
String zeile = "";
String text = "";
String test = "";
String vd = "Anfang";
Karteikarte[] karteikarte = new Karteikarte[20];
int a=0;
while( (zeile = br.readLine()) != null ){
//System.out.println(zeile);
if (zeile.contains("#")){
if (a>0){
karteikarte[a] = new Karteikarte(vd, text);
}
text = "";
vd = zeile;
a++;
}
else {
text = text + "\n" + zeile;
}
}
for(int i=1; i<a;i++){
System.out.println("Vorderseite: " + karteikarte[i].getVorderseite());
System.out.println("Rueckseite: " + karteikarte[i].getRueckseite());
}
}
new GUI();
br.close();
}
}
Java:
/* Das ist die Klasse Karteikarte die die übergebenen Strings als vorder bzw. rueckseite initialisiert.
Außerdem enthält die Methode eine Getter sowie auch Setter Methode
*/
public class Karteikarte {
private String vorderseite;
private String rueckseite;
public Karteikarte (String vorderseite, String rueckseite){
this.vorderseite = vorderseite;
this.rueckseite = rueckseite;
}
public String getVorderseite(){
return vorderseite;
}
public String getRueckseite(){
return rueckseite;
}
}
Java:
/* Grafische Oberfläche für meine Kartekarte
*/
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class GUI extends JFrame implements ActionListener {
int zahl = 0;
JLabel text = new JLabel();
JButton knopf = new JButton();
int k = 1;
private String bla;
public GUI(){
this.setTitle("Karteikartenprogramm"); //Setzen des Names des Fensters
this.setDefaultCloseOperation(EXIT_ON_CLOSE); //dass das Fenster durch das x geschlossen werden kann
this.setLayout(new FlowLayout()); //Layout
text.setText("hallo"); //erster Anzeige Text
this.add(text);
knopf.setText("umdrehen"); //Button mit dem Namen umdrehen
knopf.addActionListener(this);
knopf.setActionCommand("ZAEHLEN");
this.add(knopf);
this.pack();
this.setVisible(true);
}
String[] test3 = {"hallo", "test", "diesdas", "lala"}; // ein test string um zu probieren ob es überhaupt funktioniert
private String hochzaehlen2(int k){ // gibt den String aus dem test3 Array zurück
return test3[k];
//System.out.println(bla);
}
public void actionPerformed(ActionEvent e) { // durch einen Klick auf den Button wird der neue der String aus dem test3 array abgerufen und initialisiert, danach zählvariable +1
if(e.getActionCommand().equals("ZAEHLEN")) { //
text.setText(test3[k]);
k++;
this.repaint();
}
}
}
Anhänge
Zuletzt bearbeitet: