tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
11
ZUGRIFFE
6642
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    diaspora diaspora ist offline Mitglied
    Registriert seit
    Jun 2007
    Beiträge
    14
    Hallo zusammen,

    Ich bin ein Anfänger in Java und hoffe deswegen Ihr könnt mir helfen.

    Mein Entwicklungsumgebung ist NetBeans IDE 5.5 und ich möchte ein kleines Programm erstellen, dass mir aus einem JArea-Textfeld ein Wort einliest und dann dieses Wort als oder in einer .TXT-Datei auf meinem Desktop abgespeichert.

    Natürlich ist das nicht alles was das Programm machen soll aber ich wäre euch sehr dankbar, wenn Ihr mir den Code für diesen Teil geben könntet, da ich dann darauf aufbauen und mein Programm danach noch weiter ausbauen kann.

    Naja, mein sehr bescheidener Zwischenstand in der GUI sieht wie folgt aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    
    /*
     * NewJFrame.java
     *
     * Created on 2. Juli 2007, 23:01
     */
     
    package javaapplication5;
     
    /**
     *
     * @author  diaspora
     */
    public class NewJFrame extends javax.swing.JFrame {
        
        /** Creates new form NewJFrame */
        public NewJFrame() {
            initComponents();
        }
        
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        // <editor-fold defaultstate="collapsed" desc=" Generated Code ">
        private void initComponents() {
            jScrollPane1 = new javax.swing.JScrollPane();
            jTextArea1 = new javax.swing.JTextArea();
            jButton1 = new javax.swing.JButton();
     
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            jTextArea1.setColumns(20);
            jTextArea1.setRows(5);
            jTextArea1.setText("Bitte hier eingeben");
            jScrollPane1.setViewportView(jTextArea1);
     
            jButton1.setText("speichern");
            jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseReleased(java.awt.event.MouseEvent evt) {
                    alsTXTspeichern(evt);
                }
            });
     
            org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .add(30, 30, 30)
                    .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                        .add(jButton1)
                        .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .addContainerGap(192, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                .add(layout.createSequentialGroup()
                    .add(43, 43, 43)
                    .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(jButton1)
                    .addContainerGap(114, Short.MAX_VALUE))
            );
            pack();
        }// </editor-fold>
     
       [COLOR="Red"]private void alsTXTspeichern(java.awt.event.MouseEvent evt) {
    // TODO add your handling code here:
        }[/COLOR]    
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new NewJFrame().setVisible(true);
                }
            });
        }
        
        // Variables declaration - do not modify
        private javax.swing.JButton jButton1;
        private javax.swing.JScrollPane jScrollPane1;
        private javax.swing.JTextArea jTextArea1;
        // End of variables declaration
        
    }

    Kann mir vielleicht jemand dabei helfen?

    Gruß
    Diaspora
     

  2. #2
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    ich glaube kaum, dass dir jemand helfen wird, wenn du direkt nach dem Code fragst und man nicht sieht, dass du dir selbst mal gedanken gemacht hast, vor allem wenn der Code den du gepostet hast, sehr danach aussieht, dass du diesen nur mit einem GUI-Builder zusammen geklickt hast.

    Das hier wird dir weiter helfen.
    http://www.galileocomputing.de/openb...a94eccb4ec6623

    Ich bin mir auch ziemlich sicher, wenn du weitere Fragen hast, du auch eine Lösung hier finden wirst.

    MFG

    zEriX
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  3. #3
    diaspora diaspora ist offline Mitglied
    Registriert seit
    Jun 2007
    Beiträge
    14
    Hallo,

    Danke! Das hilft mir schon mal weiter

    Gruß
    diaspora
     

  4. #4
    diaspora diaspora ist offline Mitglied
    Registriert seit
    Jun 2007
    Beiträge
    14
    Hallo,

    ich habe das Programm jetzt soweit hinbekommen wie ich es haben wollte:

    Einlesen eines Strings im Command-Fenster-> speichern als Inhalt in einer Texdatei->Öffnen einer Textdatei mit Ausgabe des Inhalts und->Möglichkeit der Ver-/Entschlüsselung

    Ich habe das ganze Programm aber prozedural und nicht objektorientiert geschrieben.
    das soll eine große Sünde sein, wenn man Programme in Java schreibt

    Aus diesem Grund wollte ich es jetzt nachträglich objektorientiert machen und die Ver-/Entschlüsselungsfunktionen in eine Extra-Klasse packen.

    Irgendwie stimmt jezt aber was nicht mehr, die Ver-/Entschlüsselungs-Methoden werden zwar von der "Haupt"-Klasse aufgerufen aber sie liefern nicht das Ergebnis zurück, wie ich es haben will, dh immer noch verschlüsselt oder unversschlüsselt,dh sie wurden von den Methoden nicht bearbeitet.

    Vielleicht liegt der Fehler aber auch darin, dass ich das Objekt der Klasse mit den Ver-/Entschlüsselungs-Methoden nicht richtig erzeugt habe

    Klasse ConsApp ("Haupt"-Klasse):
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    
    /* Verschlüsseln:
     Nach einlesen des Strings soll der String in einer TXT-Datei abgespeichert werden.
     Danach soll eine angegebene TXT-Datei geöffnet, der Inhalt eingelesen und auf der Konsole ausgegeben werden.
     Dieser Inhalt kann dann verschlüsselt oder entschlüsselt werden
    */
     
    import java.io.*;
     
    public class ConsApp extends Verschluesselung
    {
        static String middle, first, last, filename;
        static BufferedReader in;
        static PrintWriter out;
        static String DOS_CODE_PAGE = "Cp850";
        
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////           
    ////////////////////////////// Einlesen des Datei-Inhaltes ////////////////////////////////////////////////////////////     
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
        public static void main(String args[]) throws IOException
        {
            out = new PrintWriter(new OutputStreamWriter(System.out, DOS_CODE_PAGE), true);
            in  = new BufferedReader( new InputStreamReader(System.in, DOS_CODE_PAGE));
            try 
            {
                out.println("Verschlüsselung von Textdateien in Java");
                out.println("---------------------------------------"); 
                
                
                first = new String("Datei-Inhalt:");            
                
                middle = "?";
                
                
                out.print(first); out.print(' '); out.print(middle); out.println();
                out.println();
                out.println("Bitte geben Sie einen Text ein, der an Stelle der Fragezeichen in einer Text-Datei eingesetzt werden soll.");
                out.println();
                middle = in.readLine();
                
                StringBuffer buff = new StringBuffer(first.length() + middle.length());
                
                buff.append(first).append(' ').append(middle).append(' ');
                out.println();
                out.println(buff.toString());  
                
              
                create(middle);
            }
            
            catch (Throwable erx) 
                { // Error or Exception
                    out.println(); 
                    out.println("Der eingegebene Datei-Name konnte nicht gefunden werden.");
                    out.println("Bitte überprüfen Sie Ihre Eingabe noch einmal und geben Sie den Dateinamen ohne die .txt-Endung ein.");
                    open(filename);
                }
            finally 
                {
                    out.println();
                    out.println("To exit, close the window.");
                    in  = new BufferedReader( new InputStreamReader(System.in, DOS_CODE_PAGE));
                    in.readLine();
                }
      }     
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////           
    ////////////////////////////// Erstellen einer Text-Datei /////////////////////////////////////////////////////////////     
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
           public static void create(String middle)
           {
                try
                {
                    out.println();
                    out.println("Bitte geben Sie einen Namen ein, unter dem die Datei gespeichert werden soll.");
                    out.println();
                    filename = in.readLine()+ ".txt";
                    out.println();
                    FileWriter file = new FileWriter(filename);
                    String message = middle;
                    file.write(message, 0, message.length());
                    file.close();
                    open(filename);
                }
                catch (Exception e) 
                { // Error or Exception
                    out.println(); 
                    out.println("Der eingegebene Datei-Name konnte nicht gelesen werden. Versuchen Sie es bitte erneut");
                    create(middle);
                }
           }
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////            
    ////////////////////////////// Öffnen einer Text-Datei ///////////////////////////////////////////////////////////////            
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
            public static void open(String filename)
            {  
                try
                {  
                    out.println("Bitte geben Sie jetzt den Namen der Datei ein, die geöffnet und deren Inhalt jetzt angezeigt werden soll.");
                    out.println();
                    filename = in.readLine()+ ".txt";
                    out.println();
                    FileReader open_file = new FileReader(filename);
                    StringBuffer message1 = new StringBuffer();
                    char c;
                    while (open_file.ready())
                    {
                       c = (char)open_file.read();
                       message1.append(c);
                    }
                    
                    middle =(message1.toString());
                    open_file.close();
                    action();
                }
                catch (Exception e) 
                { // Error or Exception
                    out.println(); 
                    out.println("Der eingegebene Datei-Name konnte nicht gefunden werden.");
                    out.println("Bitte überprüfen Sie Ihre Eingabe noch einmal und geben Sie den Dateinamen ohne die .txt-Endung ein.");
                    out.println();
                    open(filename);
                }
            }
                
                //out.choice();
                
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////            
    ////////////////////////////// Auswahl ob Datei Ver- oder Entschlüsselt werden soll //////////////////////////////////           
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
            public static void action()
            {
                [COLOR="Red"]Verschluesselung Verschluesselung = new Verschluesselung();[/COLOR]
                try
                {
                        out.println();
                        out.println("================ Cäsar Verschlüsselung für Textdateien ================");
                        out.println();
                        out.print(first); out.print(' '); out.print(middle); out.println();
                        out.println();
                        out.println("Wählen Sie einen Modus : ");
                        out.println();
                        out.println(" <1> Verschlüsseln");
                        out.println(" <2> Entschlüsseln");
                        out.println();
                        int mode =  Integer.parseInt(in.readLine());
                        
                            if(mode==1)
                            {
                                out.println();  
                                [COLOR="red"]Verschluesselung.encode(middle);[/COLOR]
                                out.println("Dateinhalt ist verschlüsselt worden: " + middle);
                                out.println();
                                out.println("Wenn Sie speichern möchten drücken Sie bitte 'J'");
                                String s = in.readLine();
                                if (s.equals("j") || s.equals("J"))
                                {
                                    create(middle);
                                }
                                else
                                {
                                    out.println();
                                    out.println("To exit, close the window.");
                                    in  = new BufferedReader( new InputStreamReader(System.in, DOS_CODE_PAGE));
                                    in.readLine();
                                }
                                    
                            }
                            else if(mode==2)
                            {
                                out.println();
                                [COLOR="red"]Verschluesselung.decode(middle);[/COLOR]
                                out.println("Dateinhalt ist entschlüsselt worden: " + middle);
                                out.println("Wenn Sie speichern möchten drücken Sie bitte 'J'");
                                out.println();
                                String s = in.readLine();
                                if (s.equals("j") || s.equals("J"))
                                {
                                    create(middle);
                                }
                                else
                                {
                                    out.println();
                                    out.println("Um das Programm zu beenden, schließen Sie bitte das Fenster.");
                                }
                            }
                            else
                            {
                                out.println();
                                out.println("Bitte nur 1 oder 2 auswählen!");
                                action();
                            }
                }
                catch (Exception e) 
                { // Error or Exception
                     out.println();
                     out.println("Bitte wählen Sie nur die Zahl 1 oder 2 aus!");
                     action();
                }
            }
         
    }

    Das hier ist meine neue Klasse mit den Ver-/Entschlüsselungsmethoden

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////            
    ////////////////////////////// Verschlüsselungsfunktion //////////////////////////////////////////////////////////////           
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    public class Verschluesselung
    { 
        static char key = 1;
        static String middle;
     
              public static String encode( String s )
              {
                StringBuffer result = new StringBuffer();
            
                for( int i = 0; i < s.length(); i++ )
                {
                  int c = s.charAt( i );
            
                  if ( (c >= 'A') && (c <= 'z') ) {
                    c += key;
                    if( c > 'z' )
                      c = 'a' + c % 'z' -1;
                    if( (c > 'Z') && (c < 'a') ) 
                      c = 'A' + c % 'Z' - 1;
                  }
                  result.append( (char) c );
                }
                
                middle = result.toString();
                return middle;
              } 
        
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////            
    ////////////////////////////// Entschlüsselungsfunktion //////////////////////////////////////////////////////////////           
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     
              public static String decode( String s )
              {
                StringBuffer result = new StringBuffer();
                
                for( int i = 0; i < s.length(); i++ )
                {
                  int c = s.charAt( i );
            
                  if ( (c >= 'A') && (c <= 'z') ) {
                    c -= key;
                    if( (c < 'a') && (c > 'Z') )
                      c = 'a' + ('z' - c % 'a') - 1;
                    if( c < 'A' )
                      c = 'A' + ('Z' - c % 'A') - 1;
                  }
                  result.append( (char) c );
                }
            
                middle = result.toString();
                return middle;
              } 
    }


    Kann mir jemand sagen wo mein Fehler liegt und wie ich es schaffen kann dass mir ein entschlüsseltes Ergebnis zuürckgeliefert wird?

    Gruß
    diaspora
     

  5. #5
    Schnacki Schnacki ist offline Mitglied Silber
    Registriert seit
    Feb 2007
    Beiträge
    95
    Also, du könntest erstmal alle static rausnehmen.
    Die brauchst du in deinem programme nicht (auss natürlich in der Main methode)
     

  6. #6
    diaspora diaspora ist offline Mitglied
    Registriert seit
    Jun 2007
    Beiträge
    14
    Hat leider nichts geholfen....
    Immern noch das selbe Problem

    Gruß
    Diaspora
     

  7. #7
    Schnacki Schnacki ist offline Mitglied Silber
    Registriert seit
    Feb 2007
    Beiträge
    95
    Code :
    1
    
    Verschluesselung Verschluesselung = new Verschluesselung();
    Nenn mal deine Objektrefern um.
    Also die sollte anders als der Klassenname sein.

    Dann müsstes du natürlich bei:

    Code :
    1
    
    Verschluesselung.encode(middle);
    und bei
    Code :
    1
    2
    
    [
    Verschluesselung.decode(middle);
    auch die neue Referenz benutzen.
     

  8. #8
    diaspora diaspora ist offline Mitglied
    Registriert seit
    Jun 2007
    Beiträge
    14
    Habe es mit

    Verschluesselung ident = new Verschluesselung();

    und dann

    ident.encode(middle)M

    versucht, geht aber auch nicht

    Gruss
    diaspora
     

  9. #9
    Schnacki Schnacki ist offline Mitglied Silber
    Registriert seit
    Feb 2007
    Beiträge
    95
    Ich habe gerade nur mal die Verschluesselnklasse getestet, und die funktioniert.

    Kommt denn bei dir eine Fehlermeldung, oder kommt da einfach garnichts?
     

  10. #10
    Ronin-Jay Ronin-Jay ist offline Mitglied Gold
    Registriert seit
    Jun 2003
    Beiträge
    235
    Hallo diaspora,

    Deine Klasse funktioniert, aber Du mußt die Rückgabewerte natürlich auch verarbeiten. Ein einfaches
    Code java:
    1
    
    ident.encode(middle);
    führt natürlich zu keinem Ergebnis, wenn Du das Return der Methode nicht auffängst.

    Mit
    Code java:
    1
    2
    
    String encodedText = ident.encode(middle);
    System.out.println(encodedText);
    solltest Du dann auch eine Ausgabe erhalten...
     

  11. #11
    diaspora diaspora ist offline Mitglied
    Registriert seit
    Jun 2007
    Beiträge
    14
    Das Programm läuft eigentlich einwandfrei aber es werden nicht die Methoden ausgeführt. ein Verschlüsselter Inhalt einer txt-Datei wir nach Aufruf der Methode "encode" nicht entschlüsselt, sondern der Inhalt bleibt verschlüsselt und wird auch weiterhin verschlüsselt ausgegeben. Prozedural lief das Programm und die Funktionen (encode/decode) wurden auch korrekt ausgeführt aber seit dem ich die Klasse "Verschluesseln" erstellt habe und die Funktionen da rein gesetzt habe geht es nicht mehr
     

  12. #12
    diaspora diaspora ist offline Mitglied
    Registriert seit
    Jun 2007
    Beiträge
    14
    Zitat Zitat von Ronin-Jay Beitrag anzeigen
    Hallo diaspora,

    Deine Klasse funktioniert, aber Du mußt die Rückgabewerte natürlich auch verarbeiten. Ein einfaches
    Code java:
    1
    
    ident.encode(middle);
    führt natürlich zu keinem Ergebnis, wenn Du das Return der Methode nicht auffängst.

    Mit
    Code java:
    1
    2
    
    String encodedText = ident.encode(middle);
    System.out.println(encodedText);
    solltest Du dann auch eine Ausgabe erhalten...
    BINGO!!

    Das war es, was ich benötigt habe

    Vielen Dank Ronin-Jay!!
    Danke auch dir Schacki für deine Bemühungen

    Gruß
    diaspora
     

Ähnliche Themen

  1. Boxen speichern und wieder ausgeben
    Von h4dhunTer im Forum PHP
    Antworten: 0
    Letzter Beitrag: 03.01.08, 02:44
  2. Antworten: 5
    Letzter Beitrag: 19.09.06, 16:37
  3. Antworten: 5
    Letzter Beitrag: 05.05.06, 17:13
  4. Text-Datei auslesen & text anfügen (mal wieder)
    Von Nico192 im Forum Visual Basic 6.0
    Antworten: 6
    Letzter Beitrag: 22.10.05, 20:10
  5. Antworten: 2
    Letzter Beitrag: 26.05.05, 16:51