# von normalen prog zum applet



## Bastian (3. Nov 2005)

was mus ich an folgendem quelltext ändern, dass er als applet läuft? 


```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.applet.*;

/**
  *
  * Beschreibung.
  *
  * @version 1.0 vom 31.10.2005
  * @author Bastian Schaefer
  */

public class Passwort extends JFrame implements ActionListener{
  
// Anfang Variablen

   JMenuBar Menue = new JMenuBar();

   JMenu jmuZeichen = new JMenu("Zeichen");
   JMenuItem ZeichenJMenuItem1 = new JMenuItem("kleines Alphabet");
  //usw...

  // Ende Variablen

  public Passwort() {
    super("Passwortgenerator");
    this.getContentPane().setLayout(null);

    java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    //usw...
    // Anfang Komponenten
   //usw...
    // Ende Komponenten

    setVisible(true);
  }

  // Anfang Ereignisprozeduren
  
   public void ZeichenJMenuItem1ActionPerformed(ActionEvent evt) {
   zvorrat.setText(zvorrat.getText()+"abcdefghijklmnopqrstuvqxyz");
   }

   //usw..

  // Ende Ereignisprozeduren


  public static void main(String[] args) {
    new Passwort();
    }
}
```

ich habe angenommen, dass man 

```
public static void main(String[] args) {
    new Passwort();
    }
```

durch


```
public void init() {
       Passwort t = new Passwort();
       add(t);
       }
```

ersetzen muss, dem ist aber anscheinden nicht so, denn es funktioniert nicht (ja, ich habe das applet korrekt in eine html datei eingebunden...)

selbst, wenn ich eine neue klasse

```
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class PasswortGeneratorApplet extends Applet {
       public void init() {
       Passwort t = new Passwort();
       add(t);
       }
}
```

schreibe und an der ursrünglichen klasse (Passwort.java) nicht ändere funktioniert es auch nicht...
ich weiß nicht mehr weiter..


----------



## L-ectron-X (3. Nov 2005)

Ein Applet muss:
a) von java.applet.Applet oder javax.swing.JApplet erben und
b) mindestens die init()-Methode überschreiben.

Initialisiere deine GUI-Komponenten in der init()-Methode, dann wird das schon funktionieren.
Kannst dir ja auch mal dies anschauen: http://www.java-forum.org/de/viewtopic.php?t=18372


----------



## Bastian (3. Nov 2005)

L-ectron-X hat gesagt.:
			
		

> Ein Applet muss:
> a) von java.applet.Applet oder javax.swing.JApplet erben und
> b) mindestens die init()-Methode überschreiben.
> 
> ...



danke für dein beispiel, bring mich aber auch nicht weiter, da ich hier in meinem buch ein ähnliches habe.

das was du sagst ist mir eigentlich kalr, ich dachte, ich erfülle diese bedingungen, wenn ich solch eine neue klasse schreibe:

```
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.JApplet.*;
public class PasswortGeneratorApplet extends Applet {
       public void init() {
       Passwort t = new Passwort();
       add(t);
       }
}
```


----------



## Sky (3. Nov 2005)

Leite auf jeden Fall mal von JApplet ab, da Du Swing-Componenten verwendest

und dann schreib mal, was dann nicht läuft bzw. wo es Fehler gibt.


----------



## Bastian (3. Nov 2005)

Sky hat gesagt.:
			
		

> Leite auf jeden Fall mal von JApplet ab, da Du Swing-Componenten verwendest
> 
> und dann schreib mal, was dann nicht läuft bzw. wo es Fehler gibt.



also ich nehmer an, du hast mit ableiten import javax.swing.JApplet.*; gemeint (denn ... extend JApplet funktioniert ja nicht)

compilieren lässt sich alles, im applet viewer kommt dann allerdings die meldung: Start: Applet nicht initialisiert
ind der konsole bekomme ich zeitgleich folgende fehler:
java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM)
 at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
 at java.security.AccessController.checkPermission(AccessController.java:427)
 at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
 at java.lang.SecurityManager.checkExit(SecurityManager.java:744)
 at javax.swing.JFrame.setDefaultCloseOperation(JFrame.java:363)
 at Passwort.<init>(Passwort.java:52)
 at PasswortGeneratorApplet.init(PasswortGeneratorApplet.java:7)
 at sun.applet.AppletPanel.run(AppletPanel.java:374)
 at java.lang.Thread.run(Thread.java:595)


----------



## Sky (3. Nov 2005)

Was steht in der Datei Passwort.java in Zeile 52 ?


----------



## Roar (3. Nov 2005)

Sky hat gesagt.:
			
		

> Was steht in der Datei Passwort.java in Zeile 52 ?


da steht frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); und ein applet darf die vm nicht beenden.


----------



## Bastian (3. Nov 2005)

Sky hat gesagt.:
			
		

> Was steht in der Datei Passwort.java in Zeile 52 ?




```
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
```

ich poste mal die gesamte klasse:

```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.applet.*;
import javax.swing.JApplet.*;

/**
  *
  * Beschreibung.
  *
  * @version 1.0 vom 31.10.2005
  * @author Bastian Schaefer
  */

public class Passwort extends JFrame implements ActionListener{
  // Anfang Variablen

   JMenuBar Menue = new JMenuBar();

   JMenu jmuZeichen = new JMenu("Zeichen");
   JMenuItem ZeichenJMenuItem1 = new JMenuItem("kleines Alphabet");
   JMenuItem ZeichenJMenuItem2 = new JMenuItem("großes Alphabet");
   JMenuItem ZeichenJMenuItem3 = new JMenuItem("àáâ...");
   JMenuItem ZeichenJMenuItem4 = new JMenuItem("ÀÁÂ...");
   JMenuItem ZeichenJMenuItem5 = new JMenuItem("Sonderzeichen");
   JMenuItem ZeichenJMenuItem6 = new JMenuItem("Zahlen");


  JTextField länge,zvorrat;
  JTextArea ausgabe;
  JButton generate;
  JLabel label,label2,zeichenvorrat, copyright;
  Zeichenvorrat vorrat = new Zeichenvorrat();
  private JRadioButton jRadioButton1 = new JRadioButton("",true);
  private JRadioButton jRadioButton2 = new JRadioButton();
  private JRadioButton jRadioButton3 = new JRadioButton();
  private JRadioButton jRadioButton4 = new JRadioButton();
  private JRadioButton jRadioButton5 = new JRadioButton();
  private JRadioButton jRadioButton6 = new JRadioButton();
  private JRadioButton jRadioButton7 = new JRadioButton();
  private JRadioButton jRadioButton8 = new JRadioButton();
  // Ende Variablen

  public Passwort() {
    // Frame-Initialisierung
    super("Passwortgenerator");
    this.getContentPane().setLayout(null);

    java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    this.setLocation((screenSize.width-13*(screenSize.width)/15),(screenSize.height-14*(screenSize.height)/15));
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    
    // Anfang Komponenten
    this.setJMenuBar(Menue);
    Menue.add(jmuZeichen);


                ZeichenJMenuItem1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      ZeichenJMenuItem1ActionPerformed(evt);
                      }
                });
                             jmuZeichen.add(ZeichenJMenuItem1);



                ZeichenJMenuItem2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      ZeichenJMenuItem2ActionPerformed(evt);
                      }
                });
                             jmuZeichen.add(ZeichenJMenuItem2);
                             
                ZeichenJMenuItem3.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      ZeichenJMenuItem3ActionPerformed(evt);
                      }
                });
                             jmuZeichen.add(ZeichenJMenuItem3);
                             
                ZeichenJMenuItem4.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      ZeichenJMenuItem4ActionPerformed(evt);
                      }
                });
                             jmuZeichen.add(ZeichenJMenuItem4);
                             
                ZeichenJMenuItem5.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      ZeichenJMenuItem5ActionPerformed(evt);
                      }
                });
                             jmuZeichen.add(ZeichenJMenuItem5);
                             
                ZeichenJMenuItem6.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      ZeichenJMenuItem6ActionPerformed(evt);
                      }
                });
                             jmuZeichen.add(ZeichenJMenuItem6);


   ZeichenJMenuItem1.setEnabled(false);
   ZeichenJMenuItem2.setEnabled(false);
   ZeichenJMenuItem3.setEnabled(false);
   ZeichenJMenuItem4.setEnabled(false);
   ZeichenJMenuItem5.setEnabled(false);
   ZeichenJMenuItem6.setEnabled(false);
    

    label = new JLabel("Passwortlänge:");
    label.setBounds(25,10,90,20);
    
    label2 = new JLabel("Zeichen");
    label2.setBounds(170,10,50,20);

    länge = new JTextField();
    //länge.setLineWrap(false);
    länge.setBounds(120,10,50,20);
    länge.setText("8");
    länge.setToolTipText("Das Passwort sollte mindestens 8 Zeichen lang sein!");
    
    zeichenvorrat = new JLabel ("Im Passwort enthaltene Zeichen:");
    zeichenvorrat.setBounds(25,45,300,17);
    
    jRadioButton7.setBounds(20, 70, 80, 17);
    jRadioButton7.setText("0-9");
    jRadioButton7.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      jRadioButton7ActionPerformed(evt);
                      }
                });
    this.getContentPane().add(jRadioButton7);

    jRadioButton2.setBounds(20, 92, 80, 17);
    jRadioButton2.setText("a-z A-z");
    jRadioButton2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      jRadioButton2ActionPerformed(evt);
                      }
                });
    this.getContentPane().add(jRadioButton2);
    
    jRadioButton3.setBounds(20, 116, 115, 17);
    jRadioButton3.setText("Sonderzeichen");
    jRadioButton3.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      jRadioButton3ActionPerformed(evt);
                      }
                });
    this.getContentPane().add(jRadioButton3);
    
    jRadioButton1.setBounds(20, 140, 115, 17);
    jRadioButton1.setText("alle Zeichen");
    //jRadioButton1.setEnabled(true);
    jRadioButton1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      jRadioButton1ActionPerformed(evt);
                      }
                });
    vorrat.setSelection(1);
    this.getContentPane().add(jRadioButton1);
    
    jRadioButton4.setBounds(140, 70, 140, 17);
    jRadioButton4.setText("a-z A-z 0-9");
    jRadioButton4.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      jRadioButton4ActionPerformed(evt);
                      }
                });
    this.getContentPane().add(jRadioButton4);
    
    jRadioButton5.setBounds(140, 92, 140, 17);
    jRadioButton5.setText("0-9 Sonderzeichen");
    jRadioButton5.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      jRadioButton5ActionPerformed(evt);
                      }
                });
    this.getContentPane().add(jRadioButton5);
    
    jRadioButton6.setBounds(140, 116, 160, 17);
    jRadioButton6.setText("a-z A-z Sonderzeichen");
    jRadioButton6.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      jRadioButton6ActionPerformed(evt);
                      }
                });
    this.getContentPane().add(jRadioButton6);
    
    jRadioButton8.setBounds(140, 140, 115, 17);
    jRadioButton8.setText("eigene Zeichen:");
    jRadioButton8.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                      jRadioButton8ActionPerformed(evt);
                      }
                });
    this.getContentPane().add(jRadioButton8);

    zvorrat = new JTextField();
    zvorrat.setBounds(160,160,120,20);
    zvorrat.setText("Ihr Zeichenvorrat");
    zvorrat.setEditable(false);
    zvorrat.setToolTipText("Hier den eigenen Zeichenvorrat eintragen!");


    ButtonGroup group = new ButtonGroup();
    group.add(jRadioButton1);
    group.add(jRadioButton2);
    group.add(jRadioButton3);
    group.add(jRadioButton4);
    group.add(jRadioButton5);
    group.add(jRadioButton6);
    group.add(jRadioButton7);
    group.add(jRadioButton8);


    ausgabe = new JTextArea("");
    ausgabe.setLineWrap(true);
    ausgabe.setEditable(false);
    ausgabe.setToolTipText("generiertes Passwort");

    generate = new JButton("generieren");
    generate.setBounds(100,235, 100, 25);
    generate.addActionListener(this);
    
    copyright = new JLabel("(C) 2005 Bastian Schaefer");
    copyright.setBounds(76,265,150,25);

    JScrollPane ScrollPane = new JScrollPane();
    JPanel Panel = new JPanel();
    ScrollPane.getViewport().add(ausgabe);
    Panel.setLayout(new GridLayout());
    Panel.add(ScrollPane);
    Panel.setBounds(20,185,260,50);

    this.getContentPane().add(Panel);
    this.getContentPane().add(generate);
    this.getContentPane().add(länge);
    this.getContentPane().add(zvorrat);
    this.getContentPane().add(label);
    this.getContentPane().add(label2);
    this.getContentPane().add(zeichenvorrat);
    this.getContentPane().add(copyright);
    this.setSize(309,340);
    this.setResizable(false);
    this.setVisible(true);
    // Ende Komponenten

    setVisible(true);
  }

  // Anfang Ereignisprozeduren
  
   public void ZeichenJMenuItem1ActionPerformed(ActionEvent evt) {
   zvorrat.setText(zvorrat.getText()+"abcdefghijklmnopqrstuvqxyz");
   }

   public void ZeichenJMenuItem2ActionPerformed(ActionEvent evt) {
   zvorrat.setText(zvorrat.getText()+"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
   }
  
   public void ZeichenJMenuItem3ActionPerformed(ActionEvent evt) {
   zvorrat.setText(zvorrat.getText()+"áàâéèêíìîóòôúùû");
   }
   
   public void ZeichenJMenuItem4ActionPerformed(ActionEvent evt) {
   zvorrat.setText(zvorrat.getText()+"ÁÀÂÉÈÊÍÌÎÓÒÔÚÙÛ");
   }
   
   public void ZeichenJMenuItem5ActionPerformed(ActionEvent evt) {
   zvorrat.setText(zvorrat.getText()+"°!\"§$%&/()=?²³{[]}\\+*~#'-_.:,;<>|@€");
   }
   
   public void ZeichenJMenuItem6ActionPerformed(ActionEvent evt) {
   zvorrat.setText(zvorrat.getText()+"1234567890");
   }

    public void jRadioButton1ActionPerformed(ActionEvent evt) {
           vorrat.setSelection(1);
           zvorrat.setEditable(false);
           zvorrat.setText("Ihr Zeichenvorrat");
           ZeichenJMenuItem1.setEnabled(false);
           ZeichenJMenuItem2.setEnabled(false);
           ZeichenJMenuItem3.setEnabled(false);
           ZeichenJMenuItem4.setEnabled(false);
           ZeichenJMenuItem5.setEnabled(false);
           ZeichenJMenuItem6.setEnabled(false);
    }
    public void jRadioButton2ActionPerformed(ActionEvent evt) {
           vorrat.setSelection(2);
           zvorrat.setEditable(false);
           zvorrat.setText("Ihr Zeichenvorrat");
           ZeichenJMenuItem1.setEnabled(false);
           ZeichenJMenuItem2.setEnabled(false);
           ZeichenJMenuItem3.setEnabled(false);
           ZeichenJMenuItem4.setEnabled(false);
           ZeichenJMenuItem5.setEnabled(false);
           ZeichenJMenuItem6.setEnabled(false);
    }
    public void jRadioButton3ActionPerformed(ActionEvent evt) {
           vorrat.setSelection(3);
           zvorrat.setEditable(false);
           zvorrat.setText("Ihr Zeichenvorrat");
           ZeichenJMenuItem1.setEnabled(false);
           ZeichenJMenuItem2.setEnabled(false);
           ZeichenJMenuItem3.setEnabled(false);
           ZeichenJMenuItem4.setEnabled(false);
           ZeichenJMenuItem5.setEnabled(false);
           ZeichenJMenuItem6.setEnabled(false);
    }
    public void jRadioButton4ActionPerformed(ActionEvent evt) {
           vorrat.setSelection(4);
           zvorrat.setEditable(false);
           zvorrat.setText("Ihr Zeichenvorrat");
           ZeichenJMenuItem1.setEnabled(false);
           ZeichenJMenuItem2.setEnabled(false);
           ZeichenJMenuItem3.setEnabled(false);
           ZeichenJMenuItem4.setEnabled(false);
           ZeichenJMenuItem5.setEnabled(false);
           ZeichenJMenuItem6.setEnabled(false);
    }
    public void jRadioButton5ActionPerformed(ActionEvent evt) {
           vorrat.setSelection(5);
           zvorrat.setEditable(false);
           zvorrat.setText("Ihr Zeichenvorrat");
           ZeichenJMenuItem1.setEnabled(false);
           ZeichenJMenuItem2.setEnabled(false);
           ZeichenJMenuItem3.setEnabled(false);
           ZeichenJMenuItem4.setEnabled(false);
           ZeichenJMenuItem5.setEnabled(false);
           ZeichenJMenuItem6.setEnabled(false);
    }
    public void jRadioButton6ActionPerformed(ActionEvent evt) {
           vorrat.setSelection(6);
           zvorrat.setEditable(false);
           zvorrat.setText("Ihr Zeichenvorrat");
           ZeichenJMenuItem1.setEnabled(false);
           ZeichenJMenuItem2.setEnabled(false);
           ZeichenJMenuItem3.setEnabled(false);
           ZeichenJMenuItem4.setEnabled(false);
           ZeichenJMenuItem5.setEnabled(false);
           ZeichenJMenuItem6.setEnabled(false);
    }
    public void jRadioButton7ActionPerformed(ActionEvent evt) {
           vorrat.setSelection(7);
           zvorrat.setEditable(false);
           zvorrat.setText("Ihr Zeichenvorrat");
           ZeichenJMenuItem1.setEnabled(false);
           ZeichenJMenuItem2.setEnabled(false);
           ZeichenJMenuItem3.setEnabled(false);
           ZeichenJMenuItem4.setEnabled(false);
           ZeichenJMenuItem5.setEnabled(false);
           ZeichenJMenuItem6.setEnabled(false);
    }
    public void jRadioButton8ActionPerformed(ActionEvent evt) {
           vorrat.setSelection(8);
           zvorrat.setEditable(true);
           zvorrat.setText("");
           ZeichenJMenuItem1.setEnabled(true);
           ZeichenJMenuItem2.setEnabled(true);
           ZeichenJMenuItem3.setEnabled(true);
           ZeichenJMenuItem4.setEnabled(true);
           ZeichenJMenuItem5.setEnabled(true);
           ZeichenJMenuItem6.setEnabled(true);
    }

     public void actionPerformed(ActionEvent e) {
         try {
            int länge1 = Integer.parseInt(länge.getText());
            if (länge1 <= 1000 && länge1 > 0) {
            vorrat.setLänge(länge1);
            vorrat.setVorrat(zvorrat.getText());
            }
            else {
            JOptionPane.showMessageDialog(this,"Passwortlänge ungültig!\nErlaubte Eingabe: ganze Zahl zwischen 1 und 1000","ERROR",JOptionPane.ERROR_MESSAGE);}
            if (länge1 < 8 && länge1 > 0) {
            JOptionPane.showMessageDialog(this,"Ein Passwort mit weniger als\n8 Zeichen gilt als unsicher!","INFO",JOptionPane.INFORMATION_MESSAGE);}
            if (zvorrat.getText().length() != 0){
            ausgabe.setText(vorrat.pass());}
            else {
            JOptionPane.showMessageDialog(this,"Kein Zeichenvorrat definiert!","ERROR",JOptionPane.ERROR_MESSAGE);}
         } catch(NumberFormatException nfe) {
         JOptionPane.showMessageDialog(this,"Passwortlänge ungültig!\nErlaubte Eingabe: ganze Zahl zwischen 1 und 1000","ERROR",JOptionPane.ERROR_MESSAGE);
         }
         
     }
  // Ende Ereignisprozeduren

  public static void main(String[] args) {
    new Passwort();
    }
}
```


----------



## Roar (3. Nov 2005)

JBuilder GUI Builder?

die ganzen jRadioButtonXActionPerformed methoden sind doch hoffentlich nurn witz oder? :autsch:


----------



## Sky (3. Nov 2005)

Roar hat die Antwort ja schon geschrieben.

Nur nochmal zur Info: Die Fehlermeldungen sind anfänglich nicht immer leicht zu lesen; jedoch, wenn man mal genau hinschaut, so sieht man "auf den ersten Blick" an welcher Stelle der 'Absturz' war und kann dort dann mit der Fehler-Analyse ansetzen.


----------



## Bastian (3. Nov 2005)

Roar hat gesagt.:
			
		

> JBuilder GUI Builder?
> 
> die ganzen jRadioButtonXActionPerformed methoden sind doch hoffentlich nurn witz oder? :autsch:



nein, kein gui builder, ich habe aber mit "vergleichbarem" quelltext gui-programmierung "gelernt" (also, hab vorlagen gesehen, wo es auch so gemacht wurde)

was sollte ich anstatt der  jRadioButtonXActionPerformed methoden sonst machen?


----------



## Beni (3. Nov 2005)

Methodennamen waehlen, die was ueber den Inhalt aussagen :wink: 
Und das ActionEvent kannst du in den meisten Faellen vergessen.

P.S. und z.B. das Menue in eine eigene Klasse auslagern, das wuerde auch uebersichtlicher.


----------



## Roar (3. Nov 2005)

Bastian hat gesagt.:
			
		

> Roar hat gesagt.:
> 
> 
> 
> ...



:? ich find das extremstfusch. 7 deiner 8 methoden machen alle genau das gleiche und die ache ebenfalls nur wird dort nen anderer boolean wert benutzt.


----------



## Bastian (4. Nov 2005)

Roar hat gesagt.:
			
		

> Bastian hat gesagt.:
> 
> 
> 
> ...


nein, sie machen eben nicht genau das gelcihe, sie setzen jeweils eine andere selection()


----------



## L-ectron-X (4. Nov 2005)

Nimm doch eine ButtonGroup und pack dort deine JRadioButton hinein. Wenn immer nur ein JRadioButton aktiv sein darf ist das eine elegantere Lösung.


----------



## Roar (4. Nov 2005)

Bastian hat gesagt.:
			
		

> Roar hat gesagt.:
> 
> 
> 
> ...


setSelected(x) ist für mich das gleiche

siehe l-ectron-x


----------



## Bastian (6. Nov 2005)

Roar hat gesagt.:
			
		

> Bastian hat gesagt.:
> 
> 
> 
> ...



Ich habe mich nochmal rangesetzt, würdest ihr den folgenden quellcode als besser beurteilen?


```
[...]
public void actionPerformed(ActionEvent e) {
      Object quelle = e.getSource();
      [...]
      if(quelle.equals(jRadioButtonCharsNumb)){
             vorrat.setSelection(7);
             zvorrat.setEditable(false);
             zvorrat.setText("Ihr Zeichenvorrat");
             ZeichenJMenuItemKleinesAlphabet.setEnabled(false);
             ZeichenJMenuItemGroßesAlphabet.setEnabled(false);
             ZeichenJMenuItemàáâ.setEnabled(false);
             ZeichenJMenuItemÀÁÂ.setEnabled(false);
             ZeichenJMenuItemSonderzeichen.setEnabled(false);
             ZeichenJMenuItemZahlen.setEnabled(false);}

       if(quelle.equals(jRadioButtonCharsSmallBig)){
             vorrat.setSelection(2);
             zvorrat.setEditable(false);
             zvorrat.setText("Ihr Zeichenvorrat");
             ZeichenJMenuItemKleinesAlphabet.setEnabled(false);
             ZeichenJMenuItemGroßesAlphabet.setEnabled(false);
             ZeichenJMenuItemàáâ.setEnabled(false);
             ZeichenJMenuItemÀÁÂ.setEnabled(false);
             ZeichenJMenuItemSonderzeichen.setEnabled(false);
             ZeichenJMenuItemZahlen.setEnabled(false);
      }
       if(quelle.equals(jRadioButtonSonderzeichen)){
           vorrat.setSelection(3);
           zvorrat.setEditable(false);
           zvorrat.setText("Ihr Zeichenvorrat");
           ZeichenJMenuItemKleinesAlphabet.setEnabled(false);
           ZeichenJMenuItemGroßesAlphabet.setEnabled(false);
           ZeichenJMenuItemàáâ.setEnabled(false);
           ZeichenJMenuItemÀÁÂ.setEnabled(false);
           ZeichenJMenuItemSonderzeichen.setEnabled(false);
           ZeichenJMenuItemZahlen.setEnabled(false);
      }
       if(quelle.equals(jRadioButtonAlleZeichen)){
             vorrat.setSelection(1);
             zvorrat.setEditable(false);
             zvorrat.setText("Ihr Zeichenvorrat");
             ZeichenJMenuItemKleinesAlphabet.setEnabled(false);
             ZeichenJMenuItemGroßesAlphabet.setEnabled(false);
             ZeichenJMenuItemàáâ.setEnabled(false);
             ZeichenJMenuItemÀÁÂ.setEnabled(false);
             ZeichenJMenuItemSonderzeichen.setEnabled(false);
             ZeichenJMenuItemZahlen.setEnabled(false);}
       if(quelle.equals(jRadioButtonCharsSmallBigNumb)){
             vorrat.setSelection(4);
             zvorrat.setEditable(false);
             zvorrat.setText("Ihr Zeichenvorrat");
             ZeichenJMenuItemKleinesAlphabet.setEnabled(false);
             ZeichenJMenuItemGroßesAlphabet.setEnabled(false);
             ZeichenJMenuItemàáâ.setEnabled(false);
             ZeichenJMenuItemÀÁÂ.setEnabled(false);
             ZeichenJMenuItemSonderzeichen.setEnabled(false);
             ZeichenJMenuItemZahlen.setEnabled(false);
      }
       if(quelle.equals(jRadioButtonNumbSonderzeichen)){
             vorrat.setSelection(5);
             zvorrat.setEditable(false);
             zvorrat.setText("Ihr Zeichenvorrat");
             ZeichenJMenuItemKleinesAlphabet.setEnabled(false);
             ZeichenJMenuItemGroßesAlphabet.setEnabled(false);
             ZeichenJMenuItemàáâ.setEnabled(false);
             ZeichenJMenuItemÀÁÂ.setEnabled(false);
             ZeichenJMenuItemSonderzeichen.setEnabled(false);
             ZeichenJMenuItemZahlen.setEnabled(false);
      }
       if(quelle.equals(jRadioButtonCharsSmallBigSonderzeichen)){
             vorrat.setSelection(6);
             zvorrat.setEditable(false);
             zvorrat.setText("Ihr Zeichenvorrat");
             ZeichenJMenuItemKleinesAlphabet.setEnabled(false);
             ZeichenJMenuItemGroßesAlphabet.setEnabled(false);
             ZeichenJMenuItemàáâ.setEnabled(false);
             ZeichenJMenuItemÀÁÂ.setEnabled(false);
             ZeichenJMenuItemSonderzeichen.setEnabled(false);
             ZeichenJMenuItemZahlen.setEnabled(false);
      }

       if(quelle.equals(jRadioButtonEigeneZeichen)){
             vorrat.setSelection(8);
             zvorrat.setEditable(true);
             zvorrat.setText("");
             ZeichenJMenuItemKleinesAlphabet.setEnabled(true);
             ZeichenJMenuItemGroßesAlphabet.setEnabled(true);
             ZeichenJMenuItemàáâ.setEnabled(true);
             ZeichenJMenuItemÀÁÂ.setEnabled(true);
             ZeichenJMenuItemSonderzeichen.setEnabled(true);
             ZeichenJMenuItemZahlen.setEnabled(true);
       }
[...]
       }
[...]
```


----------



## L-ectron-X (6. Nov 2005)

Ich glaube, du hast nicht verstanden, was Roar meint und ich oben geschrieben habe, oder?


----------



## Bastian (6. Nov 2005)

L-ectron-X hat gesagt.:
			
		

> Ich glaube, du hast nicht verstanden, was Roar meint und ich oben geschrieben habe, oder?



cih geben zu 100% sicher bin ich mir nicht, euch verstanden zu haben. roar bezog sich allerdings auf die actionperformed methoden, die ich (glaube ich)seiner ansicht zu viele drin hatte.

du hast geschrieben, ich sollte eine buttongroup benutzen. diese ist allerdings schon seit der ersten version der programmes implementiert. (der gesamte quelltext: http://bsc.bs.funpic.de/wordpress/?page_id=14 )

ich habe auch schon gelesen, dass man den zustand der buttongroup auf 3 verschiedene weisen abfragen kann (eine davon ist eben actionlistener).
die elegante version habe ich allerdings nicht richtig durchdrungen. könnte mir das jemand kurz erklären? (in der api nachschlagen kann ich selbst [hab ich auch schon].....)


----------



## L-ectron-X (6. Nov 2005)

Ok, das habe ich nicht gesehen.
Du solltest auf jeden Fall die Möglichkeiten von ButtonGroup nutzen.
Und die Methodenaufrufe, die ständig wiederkehren, kannst du in einer eigenen Methode aufrufen. So brauchst du nicht ständig das gleiche schreiben und die Klasse wird nicht so fehleranfällig sein, weil die Aufrufe "zentralisiert" sind.


----------



## Bastian (6. Nov 2005)

L-ectron-X hat gesagt.:
			
		

> [...]
> Und die Methodenaufrufe, die ständig wiederkehren, kannst du in einer eigenen Methode aufrufen.[...]



tschuldigung, dass ich nochmal fragen muss:
ich habe doch nur eine (actionperformed)methode?!


----------



## L-ectron-X (6. Nov 2005)

Ja, aber was machst du denn in den actionPerformed()-Methoden? Da rufen immer die gleichen Referenzen die gleichen Methoden auf. Die kannst du in einer privaten Methode zusammenfassen. In den actionPerformed()-Methode rufst du dann deine neue private Methode auf. Das spart Zeilen, wird übersichtlicher und weniger fehleranfällig.


----------



## Bastian (6. Nov 2005)

L-ectron-X hat gesagt.:
			
		

> Ja, aber was machst du denn in den actionPerformed()-Methoden? Da rufen immer die gleichen Referenzen die gleichen Methoden auf. Die kannst du in einer privaten Methode zusammenfassen. In den actionPerformed()-Methode rufst du dann deine neue private Methode auf. Das spart Zeilen, wird übersichtlicher und weniger fehleranfällig.



ah, jetzt hats klick gemacht (hoff ich zumindest)  danke


```
private void setPref(boolean b){
             zvorrat.setEditable(b);
             zvorrat.setText("Ihr Zeichenvorrat");
             ZeichenJMenuItemKleinesAlphabet.setEnabled(b);
             ZeichenJMenuItemGroßesAlphabet.setEnabled(b);
             ZeichenJMenuItemàáâ.setEnabled(b);
             ZeichenJMenuItemÀÁÂ.setEnabled(b);
             ZeichenJMenuItemSonderzeichen.setEnabled(b);
             ZeichenJMenuItemZahlen.setEnabled(b);
    }
    

    public void actionPerformed(ActionEvent e) {
      Object quelle = e.getSource();
 [...]
       if(quelle.equals(jRadioButtonCharsSmallBig)){
             vorrat.setSelection(2);
             setPref(false);
      }
       if(quelle.equals(jRadioButtonSonderzeichen)){
           vorrat.setSelection(3);
            setPref(false);
      }
       if(quelle.equals(jRadioButtonAlleZeichen)){
             vorrat.setSelection(1);
             setPref(false);
       }
       if(quelle.equals(jRadioButtonCharsSmallBigNumb)){
             vorrat.setSelection(4);
             setPref(false);
      }
       if(quelle.equals(jRadioButtonNumbSonderzeichen)){
             vorrat.setSelection(5);
             setPref(false);
      }
       if(quelle.equals(jRadioButtonCharsSmallBigSonderzeichen)){
             vorrat.setSelection(6);
             setPref(false);
       }
       if(quelle.equals(jRadioButtonEigeneZeichen)){
             vorrat.setSelection(8);
             setPref(true);
             zvorrat.setText("");
       }
 [...]
```


so wars doch gemeint, oder? (gesamter quelletxt unter: http://bsc.bs.funpic.de/wordpress/?page_id=14 ->Passwort.java )


----------

