tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von Laocoon
  • 1 Beitrag von MiMi
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
4834
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    ThePatch ThePatch ist offline Grünschnabel
    Registriert seit
    Jan 2007
    Beiträge
    2
    Hallo zusammen,
    ich habe folgendes Problem: in meiner Java Application gibt es ein TextField, eine TextArea und 3Button.
    1 Button: liest den Text aus dem TextField aus und kopiert ihn in die Textarea
    2 Button: löscht den gesamten Inhalt der TextArea
    3 Button: soll eine einzelne Zeile in der Textarea löschen.

    Die ersten 2 Button sind kein Problem, aber der dritte.... Kann mir jmd helfen dieses Problem zu lösen?

    ThX schon mal

    Source:
    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
    
    import javax.swing.*;
    import javax.swing.text.BadLocationException;
     
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
     
    public class Execute extends JFrame implements ActionListener{
        
        private static final long serialVersionUID = 1L;
        JMenuBar mb = new JMenuBar();
        JTextField tf = new JTextField(10);
        JTextArea ta = new JTextArea(10,10);
        JButton b1 = new JButton("Text einfügen");
        JButton b2 = new JButton("Zeile löschen");
        JButton b3 = new JButton("Alles löschen");
        
            public Execute(){
                super("Beleg");
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);            
                
                JPanel contp = new JPanel();
                contp.setLayout(new BorderLayout());            
                contp.add(tf,BorderLayout.NORTH);
                contp.add(ta,BorderLayout.CENTER);
                ta.setEditable(false);
                Box box1 = Box.createHorizontalBox();        
                box1.add(b1);
                box1.add(b2);
                box1.add(b3);
                contp.add(box1,BorderLayout.SOUTH);
            
                //actionlistener
                b1.addActionListener(this);
                b2.addActionListener(this);
                b3.addActionListener(this);
                
                
                
              //Menu
                JMenu m1 = new JMenu("Datei");
                JMenu m2 = new JMenu("?");
                JMenuItem beenden = new JMenuItem("Beenden");
                JMenuItem info = new JMenuItem("Info");
                m1.add(beenden);
                m2.add(info);
                
                mb.add(m1);
                mb.add(m2);
                setJMenuBar(mb);
                
                setContentPane(contp);    
            }
                    
                            
                        
        public static void main(String[] args) {
            
            Execute l1 = new Execute();
            l1.setSize(500,300);
            l1.setLocation(200,200);
            l1.setVisible(true);
        }
     
     
     
        public void actionPerformed(ActionEvent e) {
            
            String value = e.getActionCommand();
            
            String content = tf.getText();
            
            //insert
            if (value.equals("Text einfügen")){
                ta.insert(content + "\n\r",0);
                tf.setText("");
            }
            //delete line
            if (value.equals("Zeile löschen")){
                            
            }
            //delete all
            if (value.equals("Alles löschen")){
                ta.setText("");
                tf.setText("");
            }
            
        }
     
    }
     

  2. #2
    andy72 andy72 ist offline Mitglied Platin
    Registriert seit
    Oct 2006
    Ort
    München
    Beiträge
    655
    Hi,

    ein möglicher Lösungsansatz wäre evtl., dass Du nach dem vergangenen CR (CarriageReturn) suchst, und die Zeichenkette bis zum nächsten Vorkommen von CR durchsuchst und dann aus der gesamten Zeichenkette entfernst, da Du danach auch die Positionen hast: Java-Funktionen wie "substring" und "indexOf" / "lastIndexOf" sollten das schaffen
     

  3. #3
    Avatar von Laocoon
    Laocoon Laocoon ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Ort
    Köln
    Beiträge
    127
    Oder du nimmst die JTextArea eigenen Methoden (siehe API)

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
                int start;
                int end;
                int count = -1;
                try {
                    count = txt1.getLineCount();
                    if(count > 0){
                        start = txt1.getLineStartOffset(count -1);
                        end = txt1.getLineEndOffset(count -1);
                        if(count > 1){
                            //Sorgt dafür, dass das \n auch gelöscht wird.
                            start = start - 1;
                        }
                        txt1.replaceRange(null, start, end);
                    }
                } catch (BadLocationException e1) {
                    e1.printStackTrace();
                }

    Sieht mehr aus als es ist ... du besorgst dir im Prinzip einfach die letzte Zeile über getLineCount(). Suchst die die Offsets zu der Zeile (Anfang und Ende) (dabei noch dafür sorgen, dass das /n auch gelöscht wird!) und "ersetzt" die Zeile mit nichts (-->löschen)

    Der Rest davon ist Fehlerbehandlung/vermeidung.

    Obs noch einfacher geht weiß ich leider nicht.

    MfG
    Daniel
     
    Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat.
    Winston Churchill

  4. #4
    ThePatch ThePatch ist offline Grünschnabel
    Registriert seit
    Jan 2007
    Beiträge
    2
    Vielen herzlichen Dank für die Lösung meines Problems.
    ThX ThePatch
     

  5. #5
    Avatar von Laocoon
    Laocoon Laocoon ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Ort
    Köln
    Beiträge
    127
    Gern geschehen
    Wäre nett wenn du noch den Thread als erledigt abharkst, wenn du keine weiteren Fragen zu dem Thema hast?

    MfG
    Daniel
    watchingU bedankt sich. 
    Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat.
    Winston Churchill

  6. #6
    watchingU watchingU ist offline Mitglied
    Registriert seit
    Dec 2010
    Beiträge
    20
    Hallo ich habe dazu auch ein Problem. Ich habe sowas wie einen Storno Button in meinem Programm und will das die letzte Zeile gelöscht wird. Habe den Code von Lacoon übernommen der mir allerdings nicht die letzte zeile löscht sondern irgendwo irgendwas**** weiß einer Rat?
     

  7. #7
    MiMi MiMi ist offline Mitglied Smaragd
    Registriert seit
    Sep 2007
    Beiträge
    1.177
    Waere das einfachste nicht, jede Zeile in nem Array zu haben, und einfach das Array im Textfeld auszugeben. Sobald man dann im Array was aendert (loeschen, hinzufuegen etc) aendert sich die Anzeige im Textfeld auch
    watchingU bedankt sich. 
    Waere super wenn ihr euren Code in dieser Form einfuegt:
    [JAVA]System.out.println("Test :)");[/JAVA]
    wird zu:
    Code java:
    1
    
    System.out.println("Test :)");
    Tabs sind uebrigens keine Feinde :)
    Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
    Danke :D

Ähnliche Themen

  1. JTextArea letzte Zeile sichtbar
    Von MScalli im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 19.02.09, 13:28
  2. .dat Datei einzelne Zeile löschen
    Von MopsdeBops im Forum Java
    Antworten: 0
    Letzter Beitrag: 10.01.09, 13:14
  3. Neue Zeile am Anfang von JTextArea einfügen
    Von Angiii im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 28.11.08, 08:49
  4. JTextArea - Einzelne Teile färben
    Von Klein0r im Forum Java
    Antworten: 3
    Letzter Beitrag: 21.09.07, 10:48
  5. JTextArea: Farbe einer einzelnen Zeile ändern.
    Von absuluter Beginner im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 28.10.04, 16:42