Hi,
da ich schon bei meiner vorherigen Aufgabe zu abstrakten Klassen viel Unterstützung bekommen habe, bräuchte ich bei einer weiteren Aufgabe euren Rat.
Schreiben Sie ein Programm names Gdemo, dass in einem Swing-Anwendungsfenster mittels der Klasse JLabel die zwei Werte zweier Variablen x und y vom Typ double anzeigt. In dem Fenster sollen sich außerdem ein JButton-Objekt mit den Beschriftungen „addiere“ und ein zweites JButton-Objekt mit der Beschrifftung „dividiere“ sowie ein JTextField-Objekt mit Platz für 6 Zeichen befinden. Nach dem Start des Programms soll das Texfeld zunächst den Wert „0“ anzeigen.
Definieren Sie eine Klasse Buttonfunktionen mit den beiden Methoden funktonAddiere und funktionDividiere, die nur jeweils die Berechnung enthalten, die bei der Betätigung einer der beiden Tasten ausgeführt werden soll. Diese Klasse soll nicht das Interface ActionListener implementieren! funktonAddiere soll die Werte von x und y addieren, funktionDividiere soll x durch y teilen. Der Rückgabewert entspricht dem Resultat.
Definieren Sie eine Klasse TastenListener, die das Interface ActionListener implementiert, um die Ereignisbehandlung für das Grafikprogramm mittels der Klasse Buttonfunkionen zu implementieren und das Resultat der Berechnung im Texfeld anzuzeigen.
Hinweis: Der Inhalt eines Textfeldes kann mit der Methode getText() ausgelesen werden.
Meine Überlegung war es diese Aufgabe mit inneren Klassen zu lösen, was mir persönlich überhaupt nicht gefällt. Ich wüsste aber auch nicht wie ich diese Aufgabe anders lösen könnte da keine Angaben gemacht wurden ob Statische Variablen oder Methoden erlaubt sind.
Für alle Tipps bin ich euch sehr dankbar.
Mein Code
da ich schon bei meiner vorherigen Aufgabe zu abstrakten Klassen viel Unterstützung bekommen habe, bräuchte ich bei einer weiteren Aufgabe euren Rat.
Schreiben Sie ein Programm names Gdemo, dass in einem Swing-Anwendungsfenster mittels der Klasse JLabel die zwei Werte zweier Variablen x und y vom Typ double anzeigt. In dem Fenster sollen sich außerdem ein JButton-Objekt mit den Beschriftungen „addiere“ und ein zweites JButton-Objekt mit der Beschrifftung „dividiere“ sowie ein JTextField-Objekt mit Platz für 6 Zeichen befinden. Nach dem Start des Programms soll das Texfeld zunächst den Wert „0“ anzeigen.
Definieren Sie eine Klasse Buttonfunktionen mit den beiden Methoden funktonAddiere und funktionDividiere, die nur jeweils die Berechnung enthalten, die bei der Betätigung einer der beiden Tasten ausgeführt werden soll. Diese Klasse soll nicht das Interface ActionListener implementieren! funktonAddiere soll die Werte von x und y addieren, funktionDividiere soll x durch y teilen. Der Rückgabewert entspricht dem Resultat.
Definieren Sie eine Klasse TastenListener, die das Interface ActionListener implementiert, um die Ereignisbehandlung für das Grafikprogramm mittels der Klasse Buttonfunkionen zu implementieren und das Resultat der Berechnung im Texfeld anzuzeigen.
Hinweis: Der Inhalt eines Textfeldes kann mit der Methode getText() ausgelesen werden.
Meine Überlegung war es diese Aufgabe mit inneren Klassen zu lösen, was mir persönlich überhaupt nicht gefällt. Ich wüsste aber auch nicht wie ich diese Aufgabe anders lösen könnte da keine Angaben gemacht wurden ob Statische Variablen oder Methoden erlaubt sind.
Für alle Tipps bin ich euch sehr dankbar.
Mein Code
Java:
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;
import javax.swing.JTextField;
public class Gdemo extends javax.swing.JFrame
{
private JLabel xValueLabel;
private JLabel yValueLabel;
private JButton addButton;
private JButton divideButton;
private JTextField resultTextField;
private double x = 5, y = 7;
private Buttonfunktionen buttonfunktionen = new Buttonfunktionen();
public Gdemo()
{
setBounds(20, 20, 400, 100);
initComponents();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void initComponents()
{
FlowLayout flowLayout = new FlowLayout();
this.getContentPane().setLayout(flowLayout);
this.xValueLabel = new JLabel(Double.toString(this.x));
this.yValueLabel = new JLabel(Double.toString(this.y));
this.addButton = new JButton("addiere");
this.divideButton = new JButton("dividiere");
this.resultTextField = new JTextField(6);
this.resultTextField.setText("0");
this.getContentPane().add(this.xValueLabel);
this.getContentPane().add(this.yValueLabel);
this.getContentPane().add(this.addButton);
this.getContentPane().add(this.divideButton);
this.getContentPane().add(this.resultTextField);
this.addButton.addActionListener(new TastenListener());
this.divideButton.addActionListener(new TastenListener());
}
class Buttonfunktionen
{
public double funktionAddiere()
{
double x = Double.parseDouble(xValueLabel.getText());
double y = Double.parseDouble(yValueLabel.getText());
return x + y;
}
public double funktionDividiere()
{
double x = Double.parseDouble(xValueLabel.getText());
double y = Double.parseDouble(yValueLabel.getText());
return x / y;
}
}
class TastenListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == addButton)
{
resultTextField.setText(Double.toString(buttonfunktionen.funktionAddiere()));
} else
{
resultTextField.setText(Double.toString(buttonfunktionen.funktionDividiere()));
}
}
}
public static void main(String[] args)
{
Gdemo g = new Gdemo();
}
}