2Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
4834
4834
EMPFEHLEN
-
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(""); } } }
-
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
-
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
DanielEin Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat.
Winston Churchill
-
Vielen herzlichen Dank für die Lösung meines Problems.
ThX ThePatch
-
Gern geschehen

Wäre nett wenn du noch den Thread als erledigt abharkst, wenn du keine weiteren Fragen zu dem Thema hast?
MfG
DanielEin Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat.
Winston Churchill
-
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?
-
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
Waere super wenn ihr euren Code in dieser Form einfuegt:
[JAVA]System.out.println("Test :)");[/JAVA]
wird zu:
Tabs sind uebrigens keine Feinde :)Code java:1
System.out.println("Test :)");
Der "Erledigt Button" beisst net :) Und der "Danke Button" ist auch nicht nur zur zierde
Danke :D
Ähnliche Themen
-
JTextArea letzte Zeile sichtbar
Von MScalli im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 19.02.09, 13:28 -
.dat Datei einzelne Zeile löschen
Von MopsdeBops im Forum JavaAntworten: 0Letzter Beitrag: 10.01.09, 13:14 -
Neue Zeile am Anfang von JTextArea einfügen
Von Angiii im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 28.11.08, 08:49 -
JTextArea - Einzelne Teile färben
Von Klein0r im Forum JavaAntworten: 3Letzter Beitrag: 21.09.07, 10:48 -
JTextArea: Farbe einer einzelnen Zeile ändern.
Von absuluter Beginner im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 28.10.04, 16:42





Zitieren
Login





