Menü verschwindet durch .setText()

Gurkolomäus

Mitglied
Hallo liebe Community,
dieser Bug bereitet mir echt Kopfzerbrechen, da ich Menüs schon in einigen Java-Programmen erfolgreich verwendet habe, und noch nie ein solches Problem hatte. Der Code ist wie folgt:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

import javax.swing.JFrame;

public class KryptoTool {

   public static void main(String[] arg){
        new KryptoTool();
   }
   
  private TextField originalText;
  private TextField keyText;
  private Button encryptButton, decryptButton;
  private EncryptListener EncryptWatcher;
  private JFrame frame = new JFrame();


  public char abc[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
      'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
      'Y', 'Z', 'Ä', 'Ö', 'Ü', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
      'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
      'x', 'y', 'z', 'ä', 'ö', 'ü', 'ß', '0', '1', '2', '3', '4', '5', '6',
      '7', '8', '9', ' ', '!','-', '.' }; //dynamisches Array, beliebig erweiterbar
  
  public KryptoTool() {
    
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setSize(600,200);
  frame.setResizable(false);
  frame.getContentPane().setLayout(new GridLayout(3,3));
  frame.getContentPane().setBackground(new Color (0xB5D1FF));
  frame.getContentPane().add(new Label("hier den zu bearbeitenden Text einfügen:"));
  originalText = new TextField("");
  frame.getContentPane().add(originalText);
  frame.getContentPane().add(new Label("hier den Schlüssel einfügen:"));
  keyText = new TextField("");
  frame.getContentPane().add(keyText);
  encryptButton = new Button("Chiffrieren");
  frame.getContentPane().add(encryptButton);
  decryptButton = new Button("Dechiffrieren");
  frame.getContentPane().add(decryptButton);
  EncryptWatcher = new EncryptListener();
  encryptButton.addActionListener(EncryptWatcher);
  //Menüleiste
  JMenuBar bar = new JMenuBar();
  JMenu menu = new JMenu("Menü");
  JMenuItem CaesarChiffre = new JMenuItem("Caesar Chiffre");
  JMenuItem VigenereChiffre = new JMenuItem("Vigenère Chiffre");
  JMenuItem RSAChiffre = new JMenuItem("RSA Chiffre");
  
  //ActionListener der Menüleiste
  CaesarChiffre.addActionListener(new ActionListener(){
     @Override
     public void actionPerformed(ActionEvent e) {

     }
  });
  VigenereChiffre.addActionListener(new ActionListener(){
       @Override
       public void actionPerformed(ActionEvent e) {

       }
  });
  RSAChiffre.addActionListener(new ActionListener(){
       @Override
       public void actionPerformed(ActionEvent e) {

       }
  });
  
  menu.add(CaesarChiffre);
  menu.add(VigenereChiffre);
  menu.add(RSAChiffre);
  bar.add(menu);
  frame.setJMenuBar(bar);
  frame.setVisible(true);
  }

  public class EncryptListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      String keyString = keyText.getText();
      char originalAsArray[] = originalText.getText().toCharArray();//Umwandlung der Eingabe in ein charArray
      int key = 0;
      try {
        key = Integer.valueOf(keyString);//Versuch, den key String in einen Integer Umzuwandeln
      } catch (NumberFormatException n) {//Wenn der key String keine Zahl (bzw. kein Integer) ist, feuert catch
        originalText.setText("Der Key muss eine Zahl sein");
        return;
      }
      char encrypted[] = new char[originalAsArray.length];//Array zum Speichern des verschlüsselten Textes wird erstellt

      for (int b = 0; b < originalAsArray.length; b++) {
        char c = originalAsArray[b];//für jeden char im zu verschlüsselnden CharArray wird die Schleife ausgeführt
        for (int i = 0; i < abc.length; i++) {
          if (c == abc[i]){//sucht den char im array abc[]
            int position = i;
            position += key;//der Schlüssel wird zum zu verschlüsselnden Buchstaben addiert
            position = position % abc.length;//der Modulo der Länge des Alphabets bzw. des Arrays wird berechnet, um innerhalb des Arrays zu bleiben
            while (position < 0) position += abc.length;//negative Moduloergebnisse werden ausgeschlossen
            encrypted[b] = abc[position];//dem verschlüsselten Zahlenwert wird der passende Buchstabe zugeordnet, und dieser wird im Array encrypted gespeichert
            break;
          } else if (i == abc.length - 1) {
            //char nicht im Alphabet bzw. im Array
            encrypted[b] = '?';
          }
        }
        
      }
      originalText.setText(String.valueOf(encrypted));//das charArray mit dem verschlüsselten Text wird als String im Eingabefeld ausgegeben
    }
  }
}

Abgesehen davon, dass das Programm natürlich noch nicht fertig ist, bereitet mir das Menü insofern Probleme, als dass der Reiter mit Caesar Chiffre, Viginere Chiffre und RSA Chiffre verschwindet, sobald der Button "Chiffrieren" gedrückt wurde.
Kommentiert man die Zeile
Java:
originalText.setText(String.valueOf(encrypted));//das charArray mit dem verschlüsselten Text
aus, tritt dieses Problem nicht auf. Ich hoffe jemand kennt die Ursache bzw. die Lösung für diesen Bug.
 
Zuletzt bearbeitet:

dehlen

Bekanntes Mitglied
also bei mir bleibt das Menü da wo es sein sollte (ich habe einen Mac) versuche es mal auf einem anderen Rechner

Ps was ich persönlich sowieso cooler fände wäre wenn du eine JTabbedPane machen würdest und kein Menü aber das ist deine Entscheidung
 

Gurkolomäus

Mitglied
Hab ich schon. Sowohl auf XP als auch auf Windows 7 Rechnern, bei allen tritt das Problem auf. Seltsam dass es auf einem Mac zu funktionieren scheint. Soll ich vllt mal einen Screenshot davon posten, was ich meine?
 

jwiesmann

Bekanntes Mitglied
Du mischt AWT und Swing .. versuchs mal so
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

//Autoren: Simon Froitzheim, Michael Lomb, Felix Steinfurth
public class KryptoTool {

   public static void main(String[] arg){
        new KryptoTool();
   }

  private JTextField originalText;
  private JTextField keyText;
  private Button encryptButton, decryptButton;
  private EncryptListener EncryptWatcher;
  private JFrame frame = new JFrame();


  public char abc[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
      'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
      'Y', 'Z', 'Ä', 'Ö', 'Ü', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
      'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
      'x', 'y', 'z', 'ä', 'ö', 'ü', 'ß', '0', '1', '2', '3', '4', '5', '6',
      '7', '8', '9', ' ', '!','-', '.' }; //dynamisches Array, beliebig erweiterbar

  public KryptoTool() {

  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setSize(600,200);
  frame.setResizable(false);
  frame.getContentPane().setLayout(new GridLayout(3,3));
  frame.getContentPane().setBackground(new Color (0xB5D1FF));
  frame.getContentPane().add(new JLabel("hier den zu bearbeitenden Text einfügen:"));
  originalText = new JTextField("");
  frame.getContentPane().add(originalText);
  frame.getContentPane().add(new JLabel("hier den Schlüssel einfügen:"));
  keyText = new JTextField("");
  frame.getContentPane().add(keyText);
  encryptButton = new Button("Chiffrieren");
  frame.getContentPane().add(encryptButton);
  decryptButton = new Button("Dechiffrieren");
  frame.getContentPane().add(decryptButton);
  EncryptWatcher = new EncryptListener();
  encryptButton.addActionListener(EncryptWatcher);
  //Menüleiste
  JMenuBar bar = new JMenuBar();
  JMenu menu = new JMenu("Menü");
  JMenuItem CaesarChiffre = new JMenuItem("Caesar Chiffre");
  JMenuItem VigenereChiffre = new JMenuItem("Vigenère Chiffre");
  JMenuItem RSAChiffre = new JMenuItem("RSA Chiffre");

  //ActionListener der Menüleiste
  CaesarChiffre.addActionListener(new ActionListener(){
     @Override
     public void actionPerformed(ActionEvent e) {

     }
  });
  VigenereChiffre.addActionListener(new ActionListener(){
       @Override
       public void actionPerformed(ActionEvent e) {

       }
  });
  RSAChiffre.addActionListener(new ActionListener(){
       @Override
       public void actionPerformed(ActionEvent e) {

       }
  });

  menu.add(CaesarChiffre);
  menu.add(VigenereChiffre);
  menu.add(RSAChiffre);
  bar.add(menu);
  frame.setJMenuBar(bar);
  frame.setVisible(true);
  }

  public class EncryptListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      String keyString = keyText.getText();
      char originalAsArray[] = originalText.getText().toCharArray();//Umwandlung der Eingabe in ein charArray
      int key = 0;
      try {
        key = Integer.valueOf(keyString);//Versuch, den key String in einen Integer Umzuwandeln
      } catch (NumberFormatException n) {//Wenn der key String keine Zahl (bzw. kein Integer) ist, feuert catch
        originalText.setText("Der Key muss eine Zahl sein");
        return;
      }
      char encrypted[] = new char[originalAsArray.length];//Array zum Speichern des verschlüsselten Textes wird erstellt

      for (int b = 0; b < originalAsArray.length; b++) {
        char c = originalAsArray[b];//für jeden char im zu verschlüsselnden CharArray wird die Schleife ausgeführt
        for (int i = 0; i < abc.length; i++) {
          if (c == abc[i]){//sucht den char im array abc[]
            int position = i;
            position += key;//der Schlüssel wird zum zu verschlüsselnden Buchstaben addiert
            position = position % abc.length;//der Modulo der Länge des Alphabets bzw. des Arrays wird berechnet, um innerhalb des Arrays zu bleiben
            while (position < 0) position += abc.length;//negative Moduloergebnisse werden ausgeschlossen
            encrypted[b] = abc[position];//dem verschlüsselten Zahlenwert wird der passende Buchstabe zugeordnet, und dieser wird im Array encrypted gespeichert
            break;
          } else if (i == abc.length - 1) {
            //char nicht im Alphabet bzw. im Array
            encrypted[b] = '?';
          }
        }

      }
      originalText.setText(String.valueOf(encrypted));//das charArray mit dem verschlüsselten Text wird als String im Eingabefeld ausgegeben
    }
  }
}

analog dazu solltest du dich für eine Art entscheiden!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Swing: Menü verschwindet beim Einfügen eines Bildes AWT, Swing, JavaFX & SWT 15
J GUI Programmierung Popup-Menü AWT, Swing, JavaFX & SWT 4
J Java GUI Dropdown-Menü anzeigen AWT, Swing, JavaFX & SWT 5
I Von Menü: Seite zu Seite springen (CardLayout) AWT, Swing, JavaFX & SWT 8
B Swing Menü geht nicht AWT, Swing, JavaFX & SWT 5
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
H Swing Auf Klick auf Menü-Eintrag reagieren AWT, Swing, JavaFX & SWT 0
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
M Menü ohne Menübar umsetzen[SWT] AWT, Swing, JavaFX & SWT 8
RalleYTN Swing Menü für Texteditor (Rechtsklick) AWT, Swing, JavaFX & SWT 4
D javafx.scene.control.TreeView als dropdown Menü AWT, Swing, JavaFX & SWT 6
G JavaFX Menü und mehrere Scenes AWT, Swing, JavaFX & SWT 16
J Swing aufklappbares Menü AWT, Swing, JavaFX & SWT 0
K JavaFX Fenster aufrufen über Menü AWT, Swing, JavaFX & SWT 1
F Swing Ein 2D-Game Menü mit framefüllenden Button AWT, Swing, JavaFX & SWT 6
J 2D-Grafik Menü programmieren AWT, Swing, JavaFX & SWT 2
X Popup Menü nur bei besonderem Fall öffnen AWT, Swing, JavaFX & SWT 3
U Größe eines Button im Menü ändern AWT, Swing, JavaFX & SWT 1
M Menü mit Buttons AWT, Swing, JavaFX & SWT 8
J Graphisches Game Menü AWT, Swing, JavaFX & SWT 9
J Maus "locken" für Menü AWT, Swing, JavaFX & SWT 8
S SWT: Drop-Down Menü-Einträge mit Tooltip hervorheben AWT, Swing, JavaFX & SWT 3
H Swing Menü mit Bildern AWT, Swing, JavaFX & SWT 2
C Swing Wie kann ich im Programm das Menü schließen AWT, Swing, JavaFX & SWT 2
D Jtable mit Dropdown Menü erweitern funktioniert nicht AWT, Swing, JavaFX & SWT 5
M Swing In GUI-Builder-JFrame mit Menü Schreiben und Zeichnen AWT, Swing, JavaFX & SWT 4
J Menü umstrukutierem AWT, Swing, JavaFX & SWT 5
P versch. JPanel Klassen über Menü öffnen AWT, Swing, JavaFX & SWT 12
R Bitte kein Menü bei F10 AWT, Swing, JavaFX & SWT 9
A Swing Fenstergröße mittels Menü verändern AWT, Swing, JavaFX & SWT 3
kodela Tastaturereignisse für Menü- und Anwenderbereich AWT, Swing, JavaFX & SWT 14
TheWhiteShadow Swing Problem mit Icon-Menü-Leiste AWT, Swing, JavaFX & SWT 5
E Windows Kontext Menü - Laufendes Programm AWT, Swing, JavaFX & SWT 3
J Swing Natives Menü unter OS X erstellen ? AWT, Swing, JavaFX & SWT 8
J Menü beschriftung wird nicht verändert AWT, Swing, JavaFX & SWT 7
J LookAndFeel Titelbar & About Menü AWT, Swing, JavaFX & SWT 6
Eldorado Swing Popup-Menü mit Jspinner AWT, Swing, JavaFX & SWT 4
Semox Swing Shortcuts in Menü realisieren AWT, Swing, JavaFX & SWT 2
R Swing Menü wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
Semox Swing Menü und JPanel AWT, Swing, JavaFX & SWT 6
S Menü Item "abhaken" lassen vom Benutzer AWT, Swing, JavaFX & SWT 2
G Swing Fortschrittsbalken im Fenster: Menü deaktivieren / abfangen? AWT, Swing, JavaFX & SWT 27
L Verzeichnis Menü (Durchsuchen) AWT, Swing, JavaFX & SWT 2
R JRadioButtonGroup - im Menü und im losgelösten Fenster AWT, Swing, JavaFX & SWT 3
J JButton und Menü AWT, Swing, JavaFX & SWT 5
S Dropdown-Menü wie auf der Eclipse-Toolbar AWT, Swing, JavaFX & SWT 7
T einfaches Menü in swing das nicht herunterklappt? AWT, Swing, JavaFX & SWT 4
M Menü mit Layout AWT, Swing, JavaFX & SWT 10
N Fenster mit Menü AWT, Swing, JavaFX & SWT 5
V Menüeinträge im DropDown-Menü deaktivieren AWT, Swing, JavaFX & SWT 3
B Applet Menü AWT, Swing, JavaFX & SWT 6
B Dropdown-Menü im Explorer AWT, Swing, JavaFX & SWT 4
E Anfänger-JPanel aus Menü aufrufen AWT, Swing, JavaFX & SWT 4
T Scrollbalken für ein Menü oder laufendes Dropdown-Menü wie? AWT, Swing, JavaFX & SWT 34
G Funktion für PopUp Menü AWT, Swing, JavaFX & SWT 32
ElViZ JCheckBoxMenuItem Problem - Menü soll offen bleiben. AWT, Swing, JavaFX & SWT 3
S Menü AWT, Swing, JavaFX & SWT 31
L F10 Taste öffnet das Menü AWT, Swing, JavaFX & SWT 7
M Combobox verdeckt Menü AWT, Swing, JavaFX & SWT 2
T Windows-Typisches Menü für Swing AWT, Swing, JavaFX & SWT 3
D Chinesisches Menü AWT, Swing, JavaFX & SWT 6
D Pulldown Menü erstellen; welche Klasse? AWT, Swing, JavaFX & SWT 2
T Tray-Icon-Menü unter Linux AWT, Swing, JavaFX & SWT 10
J Context Menü Maus AWT, Swing, JavaFX & SWT 3
welterde Menü in der Titelleiste des JInternalFrame AWT, Swing, JavaFX & SWT 4
T Popup-Menü unter Linux AWT, Swing, JavaFX & SWT 2
G Swing Menü Hauptfenster AWT, Swing, JavaFX & SWT 14
K Menü mit ALT-D öffnen AWT, Swing, JavaFX & SWT 13
M Ereignis: Menü offen? AWT, Swing, JavaFX & SWT 2
J Icons mit Text als Menü AWT, Swing, JavaFX & SWT 2
G Problem mit Kontextmenu(Popup Menü) AWT, Swing, JavaFX & SWT 3
G Menü hervorheben, wenn Item ausgewählt ist? AWT, Swing, JavaFX & SWT 2
B Menü-Bedienung mit Keys unter AWT! AWT, Swing, JavaFX & SWT 3
J Drop-down menü in Toolbar Button AWT, Swing, JavaFX & SWT 8
G Rechte Maustaste soll Menü aufrufen AWT, Swing, JavaFX & SWT 11
G Problem mit Menü/Button auf Hintergrundbild AWT, Swing, JavaFX & SWT 10
G Datei per Menü laden und und in JTextArea darstellen AWT, Swing, JavaFX & SWT 4
A Fenster über Menü schließen AWT, Swing, JavaFX & SWT 2
G Menü oder Layout? AWT, Swing, JavaFX & SWT 2
P Menü soll sich nur nach links aufbauen... AWT, Swing, JavaFX & SWT 7
J JTextField immer über Menü der JComboBox gezeichnet AWT, Swing, JavaFX & SWT 2
G menü AWT, Swing, JavaFX & SWT 9
C ActionListener für dynamisches Menü AWT, Swing, JavaFX & SWT 8
G Wie kann man ein Kontext-Menü erstellen? AWT, Swing, JavaFX & SWT 2
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
S Nach scrollen verschwindet das zuvor im JPanel gezeichnete AWT, Swing, JavaFX & SWT 2
S Swing JButton verschwindet nach Compilieren AWT, Swing, JavaFX & SWT 8
E Button verschwindet nachdem ein Rechteck gezeichnet wurde AWT, Swing, JavaFX & SWT 5
BreakdownBob Swing JLabel verschwindet hinter Image AWT, Swing, JavaFX & SWT 2
it_is_all JPanel verschwindet nach Button-Klick AWT, Swing, JavaFX & SWT 2
E Swing Text verschwindet AWT, Swing, JavaFX & SWT 1
M Swing jButton Text verschwindet AWT, Swing, JavaFX & SWT 2
javampir Java FX Text verschwindet nicht AWT, Swing, JavaFX & SWT 9
A Swing Koordinatensystem wird gezeichnet verschwindet aber und die Einteilungen bleiben nicht bestehen AWT, Swing, JavaFX & SWT 5
R TriangleMesh verschwindet teilweise beim resizen des Frames, sowie beim rotieren? AWT, Swing, JavaFX & SWT 1
T AWT JTextfield verschwindet AWT, Swing, JavaFX & SWT 10
S LayoutManager TextField verschwindet / wird klein AWT, Swing, JavaFX & SWT 4
D Swing JOptionPane verschwindet beim 2. Aufruf einfach so?? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben