Problem mit der Kellerprozedur und und und...

Status
Nicht offen für weitere Antworten.
Hallo erstmal,
Ich schreibe in Informatik meine facharbei und hab nun das problem dass ich dafür Java lernen muss, bis jetzt kann ich nur visual basic und Delphi. So weit so gut. Ich muss in java Einen bidirektionalen Drucker programmieren, das heißt dass auf der einen seite ein textfeld steht in dem ein ganz normaler text drinsteht und auf der anderen seite Dann der text nochmal steht, bloß dass jede 2te zeile umgekehrt ist, d.h. in einen Keller "geschubst" wird und umgekehrt wieder heraus kommt. Ich hatte vor das ganze der einfachheithalber als Applet zu programmieren. Kann mir jemand vielleicht bei der ein oder anderen sache unter die Arme greifen? Zum beispiel bei der Kellerprozedur?? Das wäre sehr nett. Ich hab mir übrigens weder das dacharbeitsthema noch das fach ansich ausgesucht und bin deshalb relativ verzweifelt.
Danke schonmal im vorraus :bahnhof:
 

mic_checker

Top Contributor
Na dann poste doch mal konkrete Fragen.
Btw. musst du das per Keller machen? Oder könntest du auch einfach ne alternative Methode holen um das ganze "rückwärts" auszugeben?

Du könntest z.B. jede zweite Zeile in nen StringBuffer umwandeln und reverse() anwenden:
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuffer.html#reverse()

Ansonsten poste mal konkrete Fragen zu deinem Prob, da hier niemand das ganze Prog für dich schreiben wird.
 

ugh_bough

Mitglied
grobe vorgehensweise:

du nimmst 2 JTextAreas
Code:
JTextArea area1 = new JTextArea();
JTextArea area2 = new JTextArea();

dann hörst du in area1 nach keyEvents. Das heisst es wird automatisch eine Methode aufgerufen, wenn immer in Knopf innerhalb von area1 gedrückt wird.
Code:
area1.addKeyListener(new KeyAdapter()
{
    public void keyTyped(KeyEvent e)
    {
        // dies ist die automatisch aufgerufene methode
    }
});

diese methode wird den text in deinem area1 lesen und jede 2te zeile herumdrehen. am ende wird der komplette text in area2 geschrieben
Code:
area1.addKeyListener(new KeyAdapter()
{
    public void keyTyped(KeyEvent e)
    {
        // dies ist die automatisch aufgerufene methode

        JTextArea area = (JTextArea)e.getSource(); // das ist ein verweis auf area1
        int lines = area.getLineCount(); // jetzt weisst du wie viele zeilen es in dem JTextArea gibt

        String newText = ""; // das hier wird später in area2 landen

        for (int i = 0; i < lines; i++) // jede zeile
        {
            int anf = getLineStartOffset(i);
            int end = getLineEndOffset(i); // jetzt weiss du von wo nach wo die zeile geht
            int length = end - anf + 1; // das ist die länge der zeile (könnte auch ohne die 1 sein)

            String zeile = area1.getText(anf, length); // eine zeile
  
            if (i % 2 == 1) // jede zweite zeile
            {
                newText += drehrum(zeile); // jede zweite zeile rumdrehen
            }
            else
                newText += zeile; // diese zeile bleib so rum
        }

        area2.setText(newText); // nun neuen text einfügen
    }

     private String drehrum(String zeile)
     {
         String retZeile = ""; // das wird die umgedrehte zeile sein

         for (int i = zeile.length() -1; i >= 0; i--) // lies zeichenweise von hinten
             retZeile += zeile.charAt(i); // und hänge jedes zeichen an

         return retZeile;
     }
});

kein gewähr (musst bestimmt noch fehler ausmerzen)
verbesserungspotential: benutze StringBuffers an den mit * markierten Stellen. Die sind schneller funzen aber ähnlich (keine Operatoren, sondern methoden-aufrufe)
nochmal verbesserungspotential: man braucht nicht den kompletten neuen text berechnen, wenn man nur ein zeichen ändert. das kann man auf die neuberechnung von der stelle an der man geändert hat an verringern (evtl. wird ja ein \n eingefügt, dann müssen alle zeilen drunter umgedreht werden)

nochmal: Keine gewähr ;)
 
alsi ich muss schon nen Keller programmieren, auch wenn das mit dem StringBuffer sich ziemlich einfach anhört. Ich muss nämlich den Keller von Delphi(schon fertig) mit dem von Java vergleichen.
@ ugh_bough
is das jetzt nen keller, oder die sache mit dem stringbuffer

Also mein konkretes Problem ist Genau die sache mit dem Keller, in Delphi ist das für mich kein problem, aber in Java bin ich noch nicht soo fit...
 
Ach, das ist ja praktisch!!! Nur eine frage hab ich noch...Wie kann ich das denn jetzt in mein programm einbinden? und Muss ich einfach push und dann den namen meines textfeldes? Es bleibt ja immernoch das problem dass man nur jede zweite zeile umkehren soll.... :cry:
 
B

Beni

Gast
Du musst eher jede zweite Zeile in den Stack pushen. Und wenn du das getan hast, kriegst du sie in der umgekehrten Reihenfolge mit pop wieder raus.

P.S. das geht aber erst ab Java 1.5!
 

mic_checker

Top Contributor
ugh_bough hat gesagt.:
@ mic_checker sorry jetzt hast du gelogen. bin wohl zu gutmütig
Hä?

Code:
		String original = "123456789";
		StringBuffer strbuf = new StringBuffer(original);
		strbuf.reverse();
		System.out.println(strbuf);

Ausgabe:
987654321

Oder was geht? ;)
 

Sky

Top Contributor
Beni hat gesagt.:
Du musst eher jede zweite Zeile in den Stack pushen. Und wenn du das getan hast, kriegst du sie in der umgekehrten Reihenfolge mit pop wieder raus.

P.S. das geht aber erst ab Java 1.5!

Was geht daran erst ab 1.5??? Stack mit push und pop gibt's doch schon ewig...
 
B

Beni

Gast
Oops, stimmt. Hab Stack und Queue (die ist wirklich neu) durcheinandergebracht.
 
warum kann der kompiler den code nicht kompilieren????

Code:
import java.applet.*; 
import java.awt.*; 

public class bidi extends Applet 
{ 
  public JTextArea area1 = new JTextArea(); 

  public void init() 
  { 
    area1 = new JTextArea("area1");
    add(area1); 
  } 
}
 

mic_checker

Top Contributor
Normalerweise solltest du immer die Fehlermeldung mit posten.
In dem Fall aber wohl ganz einfach: Es kam wohl "cannot resolve symbol" oder?

Code:
import javax.swing.*;
 
Ich bin dank eurer hilfe schon gut auf dem weg...Ich hab da aber trotzdem noch ne frage: Wie kann ich die JTextArea felder breiter machen und nach unten hin limitieren??? Außerdem hab ich mir eine Batch datei erstellt, dass ich einfacher kompilieren kann, doch das dos fenster bleibt nicht offen, obwohl ich kein cls in der datei hab ???:L
 

mic_checker

Top Contributor
chuckleberrie hat gesagt.:
Ich bin dank eurer hilfe schon gut auf dem weg...Ich hab da aber trotzdem noch ne frage: Wie kann ich die JTextArea felder breiter machen und nach unten hin limitieren???
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JTextArea.html

Außerdem hab ich mir eine Batch datei erstellt, dass ich einfacher kompilieren kann, doch das dos fenster bleibt nicht offen, obwohl ich kein cls in der datei hab ???:L
Kompiliert er denn deine Dateien korrekt? Also wird die Datei korrekt abgearbeitet?

Btw. Denk dran:

Löscht den Bildschirminhalt.

CLS
Hat also nichts mit dem schließen zu tun.
 
da bin ich wieder :? ICh hab jetzt mein Applet so weit feritg, aber so recht will es noch nicht funktionieren... Der compiler meckert mal wieder :noe: also das ist mein applet

Code:
import java.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*; 

public class bidi extends Applet implements KeyListener
{ 
  public JTextArea eingang, ausgang = new JTextArea(); 
         JButton    drucken;
  

   public void init() 
    { 
    setLayout(new BorderLayout()); 
    setBackground(Color.blue);
    eingang = new JTextArea("eingang");
    ausgang = new JTextArea("ausgang");
    drucken = new JButton   ("drucken");
    drucken.addActionListener(this); 
    add(eingang, BorderLayout.WEST);
    add(ausgang, BorderLayout.EAST);
    add(drucken, BorderLayout.SOUTH); 
    }


eingang.addKeyListener(new KeyAdapter()
{
   public void keyTyped(KeyEvent e)
   {
     public void actionPerformed(ActionEvent evt) {
     
          int lines = eingang.getLineCount();
     
          String newtext= "";

          for (int i = 0; i < lines; i++)
          {
              int anf = getLineStartOffset(i); 
              int end = getLineEndOffset(i);
              int length = end - anf + 1;
             
              String zeile = eingang.gettext(anf, length);

              if (i % 2 == 1)
              {
                 newText += drehrum(zeile);
              }
              else
                 newText += zeile;
          }
          
          ausgang.setText(newText);
    }


    private String drehrum(string zeile)
    {
         String retZeil = "";

         for (int i = zeile.length() -1; i >= 0; i--)
              retTeile += zeile.charAt(i);
         
         return retZeile; 
    }
});
}

da ich leider aber nicht sehen kann worüber der Compiler meckert, weil das Dos Fenster sofort wieder schließt, hoff ich dass einer von euch trotzdem damit etwas anfangen kann :lol:
 
hab doch die Fehlermeldungen des Compilers rauslesen können: Es sind 5 an der Zahl:



F:\Java\Bidirektionaler Drucker>"C:\jdk\bin\javac" *.java
bidi.java:28: <identifier> expected
eingang.addKeyListener(new KeyAdapter()
^
bidi.java:67: ';' expected
}
^
bidi.java:28: cannot resolve symbol
symbol : class addKeyListener
location: package eingang
eingang.addKeyListener(new KeyAdapter()
^
bidi.java:8: bidi should be declared abstract; it does not define keyTyped(java.
awt.event.KeyEvent) in bidi
public class bidi extends Applet implements KeyListener
^
bidi.java:21: addActionListener(java.awt.event.ActionListener) in javax.swing.Ab
stractButton cannot be applied to (bidi)
drucken.addActionListener(this);
^
5 errors


:?
 

mic_checker

Top Contributor
1) Warum verwendest du drehrum() ? Hab doch gesagt es gibt reverse() in StringBuffer....aber egal
2) Verwendest du keine IDE? Dann starte die Konsole so, geh in das entsprechende Verzeichnis und kompiliere es , dann siehst du auch die Fehlermeldungen

Code:
private String drehrum(string zeile)
Es heisst String.

Code:
   public void keyTyped(KeyEvent e)
   {
     public void actionPerformed(ActionEvent evt) {
Was denn jetzt? Willst du keyTyped implementieren für den KeyListener oder willst du nen ActionListener und dafür actionPerformed? Das actionPerformed muss raus....

Code:
int anf = getLineStartOffset(i);
              int end = getLineEndOffset(i);
getLineStartOffset und getLineEndOffset sind Methoden von JTextArea , somit musst du sie entsprechend aufrufen.

Code:
String zeile = eingang.gettext(anf, length);
Es heisst getText() , nicht gettext() !

Hast du mal die API gelesen - da ist noch mehr das nicht passt , hab jetzt aber keine lust mehr ;)
 
sooooo, hab nochmal dran rumgewerkelt, ich krieg aber trotzdem 2 Fehler einfach nicht raus, hier nochmal das Applet:

Code:
import java.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*; 

public class bidi extends Applet implements KeyListener
{ 
  public JTextArea eingang, ausgang = new JTextArea(); 
         JButton    drucken;
  

   public void init() 
    { 
    setLayout(new BorderLayout()); 
    setBackground(Color.blue);
    eingang = new JTextArea("eingang");
    ausgang = new JTextArea("ausgang");
    drucken = new JButton   ("drucken");
    eingang.addKeyListener(this); 
    add(eingang, BorderLayout.WEST);
    add(ausgang, BorderLayout.EAST);
    add(drucken, BorderLayout.SOUTH); 
    }


   public void eingang addKeyListener(new KeyAdapter()
{
   public void keyTyped(KeyEvent e)
   {
          int lines = eingang.getLineCount();
     
          String newtext= "";

          for (int i = 0; i < lines; i++)
          {
              int anf = eingang.getLineStartOffset(i); 
              int end = eingang.getLineEndOffset(i);
              int length = end - anf + 1;
             
              String zeile = eingang.getText(anf, length);

              if (i % 2 == 1)
              {
                 newText += drehrum(zeile);
              }
              else
                 newText += zeile;
          }
          
          ausgang.setText(newText);
    }
})

    private String drehrum(String zeile)
    {
         String retZeil = "";

         for (int i = zeile.length() -1; i >= 0; i--)
              retTeile += zeile.charAt(i);
         
         return retZeile; 
    };
    
    
}


und die Fehlermeldungen:



F:\Java\Bidirektionaler Drucker>"C:\jdk\bin\javac" *.java
bidi.java:28: '(' expected
public void eingang addKeyListener(new KeyAdapter()
^
bidi.java:8: bidi should be declared abstract; it does not define keyTyped(java.
awt.event.KeyEvent) in bidi
public class bidi extends Applet implements KeyListener
^
2 errors


Ich hoffe irgendjemand hat noch lust mir weiter zu helfen...

:?
 
B

Beni

Gast
Was soll das darstellen?
Code:
public void eingang addKeyListener(new KeyAdapter()

Wenn schon
Code:
public void eingang(){
  addKeyListener( new KeyAdapter(){ ... });
}
 

mic_checker

Top Contributor
Dein Problem ist das du KeyListener implementierst, d.h. er will das du alle Methoden aus dem Interface implementierst.
Alternativ könntest du es so machen wie du es auch drin hast: über ne anonyme Klasse.

Also implementier entweder alle und du kannst implements KeyListener drin lassen oder schmeiss es raus und regel das ganze z.B. über anonyme Klassen.
 

mic_checker

Top Contributor
Hat Beni doch schon gepostet, eigentlich hast du es auch schon oben verwendet (ohne es wohl zu wissen) - allerdings musstest du es noch wie von Beni gezeigt in ne Methode packen.
 
hmmmm, komischerweise hat der kompiler, wenn ich das so mache wie der beni das gepostet hat, plötzlich probleme, wo er sich davor nicht hatte:

Code:
import java.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*; 

public class bidi extends Applet 
{ 
  public JTextArea eingang, ausgang = new JTextArea(); 
         JButton    drucken;
  

   public void init() 
    { 
    setLayout(new BorderLayout()); 
    setBackground(Color.blue);
    eingang = new JTextArea("eingang");
    ausgang = new JTextArea("ausgang");
    drucken = new JButton   ("drucken"); 
    add(eingang, BorderLayout.WEST);
    add(ausgang, BorderLayout.EAST);
    add(drucken, BorderLayout.SOUTH); 
    }


   public void eingang(){ 

   addKeyListener(new KeyAdapter()

{
   public void keyTyped(KeyEvent e)
   {
          int lines = eingang.getLineCount();
     
          String newtext= "";

          for (int i = 0; i < lines; i++)
          {
              int anf = eingang.getLineStartOffset(i); 
              int end = eingang.getLineEndOffset(i);
              int length = end - anf + 1;
             
              String zeile = eingang.getText(anf, length);

              if (i % 2 == 1)
              {
                 newText += drehrum(zeile);
              }
              else
                 newText += zeile;
          }
          
          ausgang.setText(newText);
    }
});
}


    private String drehrum(String zeile)
    {
         String retZeil = "";

         for (int i = zeile.length() -1; i >= 0; i--)
              retTeile += zeile.charAt(i);
         
         return retZeile; 
    };
    
    

}


er sacht dann:

F:\Java\Bidirektionaler Drucker>"C:\jdk\bin\javac" *.java
bidi.java:48: cannot resolve symbol
symbol: variable newText
newText += drehrum(zeile);
^
bidi.java:51: cannot resolve symbol
symbol: variable newText
newText += zeile;
^
bidi.java:54: cannot resolve symbol
symbol: variable newText
ausgang.setText(newText);
^
bidi.java:65: cannot resolve symbol
symbol : variable retTeile
location: class bidi
retTeile += zeile.charAt(i);
^
bidi.java:67: cannot resolve symbol
symbol : variable retZeile
location: class bidi
return retZeile;
^
5 errors
 
LoL, ich sollte mir mal mehr zeit zum schreiben nehmen, vielleicht wprd ich dann auch nicht so viel falsch schreiben... Naja kurz nachdem ich alle diese fehler ausgemerzt hatte und mich chon gefreut hatte, tauchten aus heiterem himmel plötzlich 3 neue auf!!!! :noe:

also es handelt sich dabei um diese Zeilen



Code:
 for (int i = 0; i < lines; i++)
          {
              int anf = eingang.getLineStartOffset(i);                         // <---
              int end = eingang.getLineEndOffset(i);                         //<---
              int length = end - anf + 1;
             
              String zeile = eingang.getText(anf, length);                 //<----

und der sacht mir dass


F:\Java\Bidirektionaler Drucker>"C:\jdk\bin\javac" *.java
bidi.java:40: unreported exception javax.swing.text.BadLocationException; must b
e caught or declared to be thrown
int anf = eingang.getLineStartOffset(i);
^
bidi.java:41: unreported exception javax.swing.text.BadLocationException; must b
e caught or declared to be thrown
int end = eingang.getLineEndOffset(i);
^
bidi.java:44: unreported exception javax.swing.text.BadLocationException; must b
e caught or declared to be thrown
String zeile = eingang.getText(anf, length);
^
3 errors


:roll:
 

mic_checker

Top Contributor
Du musst um diese Zeilen einen try...catch Block machen:

Code:
try {
//Deine Anweisungen
} catch (BadLocationException ble) {
ble.printStackTrace();
}
 

mic_checker

Top Contributor
Code:
try { 
int anf = eingang.getLineStartOffset(i);                        
              int end = eingang.getLineEndOffset(i);                       
              int length = end - anf + 1; 
              
              String zeile = eingang.getText(anf, length);
} catch (BadLocationException ble) { 
ble.printStackTrace(); 
}
 
F:\Java\Bidirektionaler Drucker>"C:\jdk\bin\javac" *.java
bidi.java:45: cannot resolve symbol
symbol: class BadLocationException
} catch (BadLocationException ble) {
^
bidi.java:51: cannot resolve symbol
symbol: variable zeile
newText += drehrum(zeile);
^
bidi.java:54: cannot resolve symbol
symbol: variable zeile
newText += zeile;
^
3 errors



:?:

Code:
import java.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*; 

public class bidi extends Applet 
{ 
  public JTextArea eingang, ausgang = new JTextArea(); 
         JButton    drucken;
  

   public void init() 
    { 
    setLayout(new BorderLayout()); 
    setBackground(Color.blue);
    eingang = new JTextArea("eingang");
    ausgang = new JTextArea("ausgang");
    drucken = new JButton   ("drucken"); 
    add(eingang, BorderLayout.WEST);
    add(ausgang, BorderLayout.EAST);
    add(drucken, BorderLayout.SOUTH); 
    }


   public void eingang(){ 

   addKeyListener(new KeyAdapter()

{
   public void keyTyped(KeyEvent e)
   {
          int lines = eingang.getLineCount();
                      
          String newText= "";

          for (int i = 0; i < lines; i++)
           {  try {
              int anf = eingang.getLineStartOffset(i);                       
              int end = eingang.getLineEndOffset(i);                       
              int length = end - anf + 1;
             
              String zeile = eingang.getText(anf, length);
              } catch (BadLocationException ble) {
              ble.printStackTrace(); 
                  }

              if (i % 2 == 1)
              {
                 newText += drehrum(zeile);
              }
              else
                 newText += zeile;
          }
          
          ausgang.setText(newText);
    }
});
}


    private String drehrum(String zeile)
    {
         String retZeile = "";

         for (int i = zeile.length() -1; i >= 0; i--)
              retZeile += zeile.charAt(i);
         
         return retZeile; 
    };
    
    

}
 

Wildcard

Top Contributor
hast du keine IDE die deine Imports organsiert?
Code:
import javax.swing.text.BadLocationException;
 
bidi.java:51: cannot resolve symbol
symbol: variable zeile
newText += drehrum(zeile);
^
bidi.java:54: cannot resolve symbol
symbol: variable zeile
newText += zeile;
^

Die beiden Fehler bleiben, kann es sein dass die variable Zeile irgendwie Falsch deklariert ist...
 

Wildcard

Top Contributor
Du initialisierst zeile im try-Block. Wenn dieser beendet ist, gibt es die Variable auch nicht mehr.
Also weiter oben initialisieren!
 

Wildcard

Top Contributor
Code:
          for (int i = 0; i < lines; i++) 
           { 
              String zeile = null;   
              try { 
              int anf = eingang.getLineStartOffset(i);                        
              int end = eingang.getLineEndOffset(i);                        
              int length = end - anf + 1; 
              
              zeile = eingang.getText(anf, length); 
              } catch (BadLocationException ble) { 
              ble.printStackTrace(); 
                  } 

              if (i % 2 == 1) 
              { 
                 newText += drehrum(zeile); 
              } 
              else 
                 newText += zeile; 
          }
Keine Ahnung wie viele zeilen das bei dir sind, aber das += bei Strings ist der Performancekiller nummer 1!
Wenn es also mehr als 'ein paar' sind in jedem Fall StringBuffer verwenden!
 
Juhuuuuuuuuuuuu, keine Fehler mehr im Programm. ABER es passier auch nix... LOL


Code:
import java.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*; 
import javax.swing.text.BadLocationException;

public class bidi extends Applet 
{ 
  public JTextArea eingang, ausgang = new JTextArea(); 
         JButton    drucken;
  

   public void init() 
    { 
    setLayout(new BorderLayout()); 
    setBackground(Color.blue);
    eingang = new JTextArea("eingang");
    ausgang = new JTextArea("ausgang");
    drucken = new JButton   ("drucken"); 
    add(eingang, BorderLayout.WEST);
    add(ausgang, BorderLayout.EAST);
    add(drucken, BorderLayout.SOUTH); 
    }


   public void eingang(){ 

   addKeyListener(new KeyAdapter()

{
   public void keyTyped(KeyEvent e)
   {
          int lines = eingang.getLineCount();
             
          String newText= "";

          for (int i = 0; i < lines; i++)
           {  
              String zeile = null;
              try {
              int anf = eingang.getLineStartOffset(i);                       
              int end = eingang.getLineEndOffset(i);                       
              int length = end - anf + 1;
             
              zeile = eingang.getText(anf, length);
              } catch (BadLocationException ble) {
              ble.printStackTrace(); 
                  }

              if (i % 2 == 1)
              {
                 newText += drehrum(zeile);
              }
              else
                 newText += zeile;
          }
          
          ausgang.setText(newText);
    }
});
}


    private String drehrum(String zeile)
    {
         String retZeile = "";

         for (int i = zeile.length() -1; i >= 0; i--)
              retZeile += zeile.charAt(i);
         
         return retZeile; 
    };
    
    

}
 

Wildcard

Top Contributor
Du hast ne Methode die genauso heißt wie ein JTextfield, die nie aufgerufen wird, und die einen KeyListener auf ein Applet legt? Muss man nicht verstehen, oder? :autsch:
 
R

Roar

Gast
Wildcard hat gesagt.:
hast du keine IDE die deine Imports organsiert?
Code:
import javax.swing.text.BadLocationException;
wenn er eine hätte, dann wüsste er jetzt nichtmal was imports sind, also is das schon gut so...
 

Wildcard

Top Contributor
Naja, wenn man mit GUI's arbeitet sollte man sich das wohl schon langsam überlegen.
Ich weiß auch nicht immer genau in welchem package welche Klasse ist...
Aber das Thema hatten wir ja schon oft genug :wink:
 
G

Guest

Gast
Hi, ich hab an dem Programm wie es oben ist, noch nichts geänder(musste pennen gehn). Gibt es die Möglichkeit, die oben geschriebene Methode( die, die die zeilen von der eingangs JTextarea in die ausgangs JTextarea schreibt und dabei jede zweite zeile umdreht) so in das applet zu schreiben, dass ich nurnoch meinen Button(drucken) drücken muss, damit das Applet die Methode ausführt. Denn so wie die Methode da jetzt steht, funktioniert se ja nicht...
 

Wildcard

Top Contributor
Wildcard hat gesagt.:
Du hast ne Methode die genauso heißt wie ein JTextfield, die nie aufgerufen wird, und die einen KeyListener auf ein Applet legt? Muss man nicht verstehen, oder? :autsch:
Erklär erstmal was du da eigentlich vorhast, der Code ist nämlich ziemlicher Käse, der kann nicht funktionieren!
Hast du das vorgehabt? (Reine Spekulation)
Code:
public class bidi extends Applet 
{ 
  public JTextArea eingang, ausgang = new JTextArea(); 
         JButton    drucken; 
  

   public void init() 
    { 
    setLayout(new BorderLayout()); 
    setBackground(Color.blue); 
    eingang = new JTextArea("eingang"); 
    eingang.addKeyListener(new KeyAdapter() 
{ 
   public void keyTyped(KeyEvent e) 
   { 
          int lines = eingang.getLineCount(); 
              
          String newText= ""; 

          for (int i = 0; i < lines; i++) 
           {  
              String zeile = null; 
              try { 
              int anf = eingang.getLineStartOffset(i);                        
              int end = eingang.getLineEndOffset(i);                        
              int length = end - anf + 1; 
              
              zeile = eingang.getText(anf, length); 
              } catch (BadLocationException ble) { 
              ble.printStackTrace(); 
                  } 

              if (i % 2 == 1) 
              { 
                 newText += drehrum(zeile); 
              } 
              else 
                 newText += zeile; 
          } 
          
          ausgang.setText(newText); 
    } 
}); 
    ausgang = new JTextArea("ausgang"); 
    drucken = new JButton   ("drucken"); 
    add(eingang, BorderLayout.WEST); 
    add(ausgang, BorderLayout.EAST); 
    add(drucken, BorderLayout.SOUTH); 
    } 

    private String drehrum(String zeile) 
    { 
         String retZeile = ""; 

         for (int i = zeile.length() -1; i >= 0; i--) 
              retZeile += zeile.charAt(i); 
          
         return retZeile; 
    }; 
}
 
G

Guest

Gast
Also, ich hatte Vorgehabt, durch drücken den buttons drucken, denText, der In JTextarea eingang steht zu der JTextarea ausgang zu kopieren, und dabei jede zweite zeile umzudrehen, dh. falschrum wiederzugeben...Dann hat man mir ein bis zwie seite vorher das mit dem keylistener angeboten und ich habs ausprobiert, funkt aber net... :roll:
 

mic_checker

Top Contributor
Ich würde dir erstmal empfehlen nicht direkt beim kleinsten Fehler hier alles zu posten - beschäftige dich selbst mit den Problemen, v.a. wo sie teils so offensichtlich sind.

Wenn du dann nicht weiterkommst, kannst es immer noch posten.

Mit "kopieren" meinst du anhängen oder was? Also das der Text aus eingang an den von ausgang angehangen wird, wobei jede zweite Zeile von eingang umgedreht in ausgang erscheint?

Wenn du den Button "drucken" hast - warum nicht einfach ActionListener dazu hinzufügen und dann enstprechend weitermachen?

Die Methode zum umgedrehten ausgeben hast du ja (bzw. es wurden auch alternativen gepostet)...wo liegt jetzt noch das Prob?
 
G

Guest

Gast
mit kopieren mein ich, den text, der in dem eingangs JTextarea steht komplett zu übernehmen(außer halt das mit dem jede zweite zeile umgedreht)...
 

mic_checker

Top Contributor
Also ausgang ist anfangs leer - du drückst auf drucken, dann übernimmt er den Text (je zweite Zeile umgekehrt) - wo ist noch das Problem?

WIe man nem Button nen ActionListener hinzufügt etc. weisst du?
 

mic_checker

Top Contributor
Code:
	class DruckeLauscher implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
....
}
}

// weiterer Code

DeinButton.addActionListener(new DruckeLauscher());

Oder über anonyme Klassen, das geht analog wie oben...
 
G

Guest

Gast
kann ich nicht auch meine klasse benutzen und trotzdem das Interface ActionListener benutzen?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Problem mit Spring Boot Dependency Injection Java Basics - Anfänger-Themen 12
R Best Practice Problem mit (einfacher) Doppelt-Schleife Java Basics - Anfänger-Themen 53
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
F Problem mit Listen Java Basics - Anfänger-Themen 5
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1

Ähnliche Java Themen


Oben