Hallo zusammen,
da ich gerade frisch gebackener java-forum-Member bin, erstmal ein herzliches Hallo an alle
Ich bin Student der Informatik im dritten Semester, habe also schon ein wenig Ahnung in einigen Programmiersprachen. Dieses Semester haben wir Java dazubekommen und müssen in diesem Fach regelmäßig Hausaufgaben einreichen. Unsere erste Aufgabe besteht darin eine Anwendung mit simpler GUI zu erstellen, bei der wir einfache Sätze mit Subjekt, Prädikat und Objekt einlesen und dann mit einem Button aus den Eingabesätzen Zufallssätze generieren sollen.
Das ganze hab ich bisher auch zufriedenstellend umgesetzt, bis auf ein paar Ausnahmen, die ich noch abfragen muss, aber soweit reicht mein Wissensschatz noch. Mein Problem ist nun, dass ich den Code innerhalb einer eigenen Klasse aufgesetzt habe, die von JFrame erbt. Dummerweise sollen wir die Aufgabe als JApplet umsetzen um die Applikation so browsertauglich zu bekommen und ich weiß nicht wie ich das anstellen soll. Von der letzten Vorlesung ist noch hängen geblieben, dass JApplets ähnlich funktionieren wie JFrames und ich dieselben GUI-Elemente aus SWING nutzen kann. Daraus nutze ich nämlich den JButton, das JTextField und das JLabel.
Am besten ich poste einmal den bisherigen Code:
Dazu hab ich auch noch eine eigene ActionListenerklasse geschrieben, die aber an dieser Stelle nicht unbedingt erforderlich ist, denke ich. Bisher hab ich gegoogelt, die SuFu hier benutzt und die Java API durchforstet. Fündig bin ich zwar geworden, hab aber nichts gefunden, was konkret mein Problem löst bzw. was mir hinreichend alles erklärt, wie gesagt bin ich Neuling in Java.
Ich wäre euch unendlich dankbar, wenn ihr mir ein paar Hinweise geben könntet, wie ich die Aufgabe bewältige. Wie gesagt möchte ich meine Klasse so umschreiben, dass sie als JApplet im Browser läuft. Danke schonmal im Vorraus!
da ich gerade frisch gebackener java-forum-Member bin, erstmal ein herzliches Hallo an alle
Ich bin Student der Informatik im dritten Semester, habe also schon ein wenig Ahnung in einigen Programmiersprachen. Dieses Semester haben wir Java dazubekommen und müssen in diesem Fach regelmäßig Hausaufgaben einreichen. Unsere erste Aufgabe besteht darin eine Anwendung mit simpler GUI zu erstellen, bei der wir einfache Sätze mit Subjekt, Prädikat und Objekt einlesen und dann mit einem Button aus den Eingabesätzen Zufallssätze generieren sollen.
Das ganze hab ich bisher auch zufriedenstellend umgesetzt, bis auf ein paar Ausnahmen, die ich noch abfragen muss, aber soweit reicht mein Wissensschatz noch. Mein Problem ist nun, dass ich den Code innerhalb einer eigenen Klasse aufgesetzt habe, die von JFrame erbt. Dummerweise sollen wir die Aufgabe als JApplet umsetzen um die Applikation so browsertauglich zu bekommen und ich weiß nicht wie ich das anstellen soll. Von der letzten Vorlesung ist noch hängen geblieben, dass JApplets ähnlich funktionieren wie JFrames und ich dieselben GUI-Elemente aus SWING nutzen kann. Daraus nutze ich nämlich den JButton, das JTextField und das JLabel.
Am besten ich poste einmal den bisherigen Code:
Java:
import java.awt.*;
import javax.swing.*;
import java.util.*;
public class MyFrame extends JFrame {
// Felder
private JLabel commandPrompt;
private JTextField inputTextField;
private JButton createRandomSentenceButton;
private JLabel outputLabel;
private ArrayList<String> subjects;
private ArrayList<String> descriptors;
private ArrayList<String> objects;
private String inputString;
private String outputString;
private String[] inputComponents;
private MyActionListener myActionListener;
// Konstruktor
public MyFrame(){
// Basisklasse initialisieren
super("Phrasendrescher");
// Eingabeaufforderungs-Label initialisieren
commandPrompt = new JLabel("Bitte geben Sie einen einfachen Satz mit Subjekt, Praedikat und Objekt ein:");
// Eingabestring mit Leerstring initialisieren
inputString = new String("");
// Ausgabestring mit Leerstring initialisieren
outputString = new String("");
// MyActionListener-Instanz hinzufügen um auf Eingaben ...
// ... reagieren zu können
myActionListener = new MyActionListener(this);
// Speicherplatz für die Arrays reservieren
subjects = new ArrayList<String>();
descriptors = new ArrayList<String>();
objects = new ArrayList<String>();
// Speicherplatz für das Satzkomponentenarray reservieren
inputComponents = new String[4];
// Eingabetextfeld initialisieren ...
// ...und ActionListener zuweisen
inputTextField = new JTextField("",20);
inputTextField.setActionCommand("inputTextField");
inputTextField.addActionListener(myActionListener);
// Ausgabelabel initialisieren
outputLabel = new JLabel("<Hier wird ein Zufallssatz stehen>");
// Button initialisieren, ActionCommand setzen & ActionListener zuteilen
createRandomSentenceButton = new JButton("Einen Zufallssatz erstellen");
createRandomSentenceButton.setActionCommand("createRandomSentenceButton");
createRandomSentenceButton.addActionListener(myActionListener);
// UI-Elemente ins GUI setzen
add(commandPrompt,BorderLayout.NORTH);
add(inputTextField,BorderLayout.CENTER);
add(outputLabel,BorderLayout.SOUTH);
add(createRandomSentenceButton,BorderLayout.EAST);
}
// damit erhält das Frame vom ActionListener den eingegebenen Satz
public void getInputString() {
this.inputString = inputTextField.getText();
// Eingabesatz in einzelne Woerter zerlegen...
// ...und in einem Stringarray speichern ...
// ... dabei das Leerzeichen als Zerlegungskriterium verwenden
inputComponents = inputString.split(" ");
// Artikel und Subjekt in eine separate Liste speichern...
// ...und beide Woerter durch ein Leerzeichen trennen
String tmp = inputComponents[0] + " " + inputComponents[1];
subjects.add(tmp);
// Praedikat in eine separate Liste speichern
descriptors.add(inputComponents[2]);
// Objekt in eine separate Liste speichern
objects.add(inputComponents[3]);
}
// damit wird durch den ActionListener der Ausgabesatz gesetzt
public void setOutputString() {
// Zufallssatz erstellen
this.outputString = this.subjects.get((int)((Math.random()*subjects.size())+0)) + " "
+ this.descriptors.get((int)((Math.random()*descriptors.size())+0)) + " "
+ this.objects.get((int)((Math.random()*objects.size())+0));
// ermittelten Ausdruck auf dem Ausgabelabel setzen
this.outputLabel.setText(this.outputString);
}
// Programm
public static void main(String[] args) {
JFrame exampleFrame = new MyFrame();
exampleFrame.pack();
exampleFrame.setVisible(true);
}
}
Dazu hab ich auch noch eine eigene ActionListenerklasse geschrieben, die aber an dieser Stelle nicht unbedingt erforderlich ist, denke ich. Bisher hab ich gegoogelt, die SuFu hier benutzt und die Java API durchforstet. Fündig bin ich zwar geworden, hab aber nichts gefunden, was konkret mein Problem löst bzw. was mir hinreichend alles erklärt, wie gesagt bin ich Neuling in Java.
Ich wäre euch unendlich dankbar, wenn ihr mir ein paar Hinweise geben könntet, wie ich die Aufgabe bewältige. Wie gesagt möchte ich meine Klasse so umschreiben, dass sie als JApplet im Browser läuft. Danke schonmal im Vorraus!