Hallo.
Ich habe ein Problem mit der Mathode setEnabled(true).
Die Klasse sieht so aus:
Wenn man jetzt zum Beispiel Durchmesser auswählt, wird der Rest zwar ausgerechnet - nach einem Klick auf "Neue Rechnung", werden aber nur die RadioButtons (Umfang, Fläche) wieder zum bearbeiten freigegeben, die erst nach dem Durchmesser angezeigt werden.
Klickt man nochmal auf "Neue Rechunng" wird wieder alles zum auswählen freigegeben.
Schon mal Danke im voraus
Simon
Ich habe ein Problem mit der Mathode setEnabled(true).
Die Klasse sieht so aus:
Code:
import java.awt.event.*;
import javax.swing.*;
public class Gegeben extends JFrame implements ItemListener {
JRadioButton[] klick;
JTextField[] werte;
JLabel[] erg;
JButton berechnen, neu;
JOptionPane[] frage;
int markiert, klicks;
String[] einheit, potenz;
public void itemStateChanged(ItemEvent e) {
markiert = 0;
if (e.getSource() == klick[0]) {
if (klick[0].isSelected()) {
werte[0].setText(JOptionPane.showInputDialog(this,
"Geben Sie den Radius in cm ein"));
}
markiert = markiert + 1;
}
if (e.getSource() == klick[1]) {
if (klick[1].isSelected()) {
werte[1].setText(JOptionPane.showInputDialog(this,
"Geben Sie Seite A in cm ein"));
}
markiert += 1;
}
if (e.getSource() == klick[2]) {
if (klick[2].isSelected()) {
werte[2].setText(JOptionPane.showInputDialog(this,
"Geben Sie Seite B in cm ein"));
}
markiert += 1;
}
if (e.getSource() == klick[3]) {
if (klick[3].isSelected()) {
werte[3].setText(JOptionPane.showInputDialog(this,
"Geben Sie Seite C in cm ein"));
}
markiert += 1;
}
if (e.getSource() == klick[4]) {
if (klick[4].isSelected()) {
werte[4].setText(JOptionPane.showInputDialog(this,
"Geben Sie den Durchmesser in cm ein"));
}
markiert += 1;
}
if (e.getSource() == klick[5]) {
if (klick[5].isSelected()) {
werte[5].setText(JOptionPane.showInputDialog(this,
"Geben Sie den Umfang in cm ein"));
}
markiert += 1;
}
if (e.getSource() == klick[6]) {
if (klick[6].isSelected()) {
werte[6].setText(JOptionPane.showInputDialog(this,
"Geben Sie die (Ober-)Fäche in cm² ein"));
}
markiert += 1;
}
if (e.getSource() == klick[7]) {
if (klick[7].isSelected()) {
werte[7].setText(JOptionPane.showInputDialog(this,
"Geben Sie den Bruttopreis 1 in € ein"));
}
markiert += 1;
}
if (e.getSource() == klick[8]) {
if (klick[8].isSelected()) {
werte[8].setText(JOptionPane.showInputDialog(this,
"Geben Sie den Bruttopreis 2 in € ein"));
}
markiert += 1;
}
if (e.getSource() == klick[9]) {
if (klick[9].isSelected()) {
werte[9].setText(JOptionPane.showInputDialog(this,
"Geben Sie Nettopreis 1 in % ein"));
}
markiert += 1;
}
if (e.getSource() == klick[10]) {
if (klick[10].isSelected()) {
werte[10].setText(JOptionPane.showInputDialog(this,
"Geben Sie Nettopreis 2 in % ein"));
}
markiert += 1;
}
if (e.getSource() == klick[11]) {
if (klick[11].isSelected()) {
werte[11].setText(JOptionPane.showInputDialog(this,
"Geben Sie den Mehrwertsteuersatz 1 in % ein"));
}
markiert += 1;
}
if (e.getSource() == klick[12]) {
if (klick[12].isSelected()) {
werte[12].setText(JOptionPane.showInputDialog(this,
"Geben Sie Mehrwertsteuersatz 2 in % ein"));
}
markiert += 1;
}
if (e.getSource() == klick[13]) {
if (klick[13].isSelected()) {
werte[13]
.setText(JOptionPane
.showInputDialog(this,
"Geben Sie die Differenz der Mehrwertsteuersätze in € ein"));
}
markiert += 1;
}
for (int i = 0; i <= 13; i++) {
klick[i].setEnabled(false);
}
// Instanzieren der Klasse Knopf-Aktion-Start
KnopfAktionStart kas = new KnopfAktionStart();
// Vorbereitung um Einheiten und Potenzen zuzuweisen
einheit = new String[6];
einheit[0] = (" cm");
einheit[1] = (" dm");
einheit[2] = (" m");
einheit[3] = (" km");
einheit[4] = (" ar");
einheit[5] = (" ha");
potenz = new String[2];
potenz[0] = ("");
potenz[1] = ("²");
// Berechnung für Kreis
if (klicks == 1 & markiert == 1) {
// wenn der Radius gegeben ist
if (klick[0].isSelected()) {
try {
double r = Double.parseDouble(werte[0].getText().replace(
",", "."));
werte[4].setText(Double.toString(2 * r));
werte[5].setText(Double.toString(Math.PI * 2 * r));
werte[6].setText(Double.toString(Math.pow(r, 2) * Math.PI));
} catch (NumberFormatException nfe) {
System.out.println("Bitte geben Sie eine Zahl ein.");
}
}
// wenn der Durchmesser gegeben ist
if (klick[4].isSelected()) {
double d = Double.parseDouble(werte[4].getText());
werte[0].setText(Double.toString(d / 2));
werte[5].setText(Double.toString(Math.PI * d));
werte[6].setText(Double.toString(Math.pow(d / 2, 2) * Math.PI));
}
// wenn der Umfang gegeben ist
if (klick[5].isSelected()) {
double u = Double.parseDouble(werte[5].getText());
werte[0].setText(Double.toString(u / Math.PI / 2));
werte[4].setText(Double.toString(u / Math.PI));
werte[6].setText(Double.toString(Math.pow(u, 2) / 4 * Math.PI));
}
// wenn Fläche gegeben ist
if (klick[6].isSelected()) {
double f = Double.parseDouble(werte[6].getText());
werte[0].setText(Double.toString(Math.pow(f / Math.PI, 0.5)));
werte[4].setText(Double
.toString(Math.pow((f / Math.PI), 0.5) * 2));
werte[5].setText(Double
.toString(2 - Math.pow(f * Math.PI, 0.5)));
}
}
}
Gegeben() {
klick = new JRadioButton[14];
klick[0] = new JRadioButton("Radius");
klick[1] = new JRadioButton("Seite A");
klick[2] = new JRadioButton("Seite B");
klick[3] = new JRadioButton("Seite C");
klick[4] = new JRadioButton("Durchmesser");
klick[5] = new JRadioButton("Umfang");
klick[6] = new JRadioButton("Fläche/Oberfläche");
klick[7] = new JRadioButton("Bruttopreis 1");
klick[8] = new JRadioButton("Bruttopreis 2");
klick[9] = new JRadioButton("Nettopreis 1");
klick[10] = new JRadioButton("Nettopreis 2");
klick[11] = new JRadioButton("Mehrwertsteuer 1");
klick[12] = new JRadioButton("Mehrwertsteuer 2");
klick[13] = new JRadioButton("Differenz");
for (int i = 0; i <= 13; i++) {
klick[i].addItemListener(this);
}
werte = new JTextField[14];
for (int i = 0; i <= 13; i++) {
werte[i] = new JTextField("");
werte[i].setEditable(false);
}
berechnen = new JButton("Jetzt Berechnen!");
neu = new JButton("Neue Rechnung");
neu.addActionListener(new KnopfAktionNeu());
}
class KnopfAktionNeu implements ActionListener {
public void actionPerformed(ActionEvent e) {
Gegeben geg = new Gegeben();
for (int i = 0; i <= 13; i++) {
klick[i].setSelected(false);
klick[i].setEnabled(true);
werte[i].setText("");
geg.repaint();
}
}
}
}
Wenn man jetzt zum Beispiel Durchmesser auswählt, wird der Rest zwar ausgerechnet - nach einem Klick auf "Neue Rechnung", werden aber nur die RadioButtons (Umfang, Fläche) wieder zum bearbeiten freigegeben, die erst nach dem Durchmesser angezeigt werden.
Klickt man nochmal auf "Neue Rechunng" wird wieder alles zum auswählen freigegeben.
Schon mal Danke im voraus
Simon