JTextArea - einzelne Zeile löschen bzw einfügn

  • Themenstarter Themenstarter Peiler
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
P

Peiler

Gast
Nacht,

Ich möchte, dass der Inhalt von dem JTextField genau jeweils eine Zeile in der JTextArea belegt(wie in jedem normalen Chat). Außerdem soll der JButton zloesch eine Zeile aus der JTextArea löschen können(unterste)...
Wie stell ich das an ?
Bisher klappt nur das er immer die Sachen nacheinander in die JTextArea schreibt...

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


public class Zulassung extends JFrame implements ActionListener {
	
	JTextArea tfeld;
	JTextField eingabe;
	JButton eing,sende,test2,zloesch,loesch;
	JPanel contp, oben, rechts;
	
public Zulassung() {
	super("Zulassung");
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	//Layouts
	BorderLayout obe = new BorderLayout();
	BorderLayout content = new BorderLayout();
	GridLayout grechts = new GridLayout(8,1);
	
	
	
	//rechter Bereich
	JLabel platzhalter = new JLabel();
	rechts = new JPanel();
	rechts.setLayout(grechts);
	zloesch = new JButton("Zeile loeschen");
	loesch = new JButton("zurücksetzen");
	test2 = new JButton("test 2");
	//rechts.add(platzhalter);
	rechts.add(zloesch);
	rechts.add(loesch);
	
	// obere Bereich
	oben = new JPanel();
	oben.setLayout(obe);
	eingabe = new JTextField(20);
	sende = new JButton("senden");
	sende.addActionListener(this);
	oben.add(eingabe,BorderLayout.WEST);
	oben.add(sende,BorderLayout.EAST);
	
	//contp
	tfeld = new JTextArea(20, 40);
	tfeld.setLineWrap(true);
	tfeld.setEditable(false);
	JPanel panel = new JPanel();
    panel.add(tfeld);


	contp = new JPanel();
	contp.setLayout(content);
	contp.add(oben, BorderLayout.NORTH);
	contp.add(tfeld, BorderLayout.CENTER);
	contp.add(rechts, BorderLayout.EAST);
	setContentPane(contp);
}

 public void actionPerformed(ActionEvent e) {
	
	 if (e.getSource()== sende) {
	 
		 tfeld.append(eingabe.getText());	 
		 eingabe.setText("");
 
	 }
	 if (e.getSource()== loesch) {
		 tfeld.setText("");
		 
	 }
	 
 }


public static void main(String args[]) {

	Zulassung Schplitz = new Zulassung();
	Schplitz.setSize(400, 300);
	Schplitz.setLocation(200, 200);
	Schplitz.setVisible(true);
	
}
	
}

Grüße
 
Bitteschön, Änderungen sind als Kommentare drin:

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


public class Zulassung extends JFrame implements ActionListener {

	JTextArea tfeld;
	JTextField eingabe;
	JButton eing,sende,test2,zloesch,loesch;
	JPanel contp, oben, rechts;

	public Zulassung() {
		super("Zulassung");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		//Layouts
		BorderLayout obe = new BorderLayout();
		BorderLayout content = new BorderLayout();
		GridLayout grechts = new GridLayout(8,1);



		//rechter Bereich
		JLabel platzhalter = new JLabel();
		rechts = new JPanel();
		rechts.setLayout(grechts);
		zloesch = new JButton("Zeile loeschen");
		loesch = new JButton("zurücksetzen");
		test2 = new JButton("test 2");
		//rechts.add(platzhalter);
		rechts.add(zloesch);
		rechts.add(loesch);

		// obere Bereich
		oben = new JPanel();
		oben.setLayout(obe);
		eingabe = new JTextField(20);
		sende = new JButton("senden");
		sende.addActionListener(this);
		// Änderung hier (ActionListener an zloesch und loesch gebunden)
		zloesch.addActionListener(this);
		loesch.addActionListener(this);
		oben.add(eingabe,BorderLayout.WEST);
		oben.add(sende,BorderLayout.EAST);

		//contp
		tfeld = new JTextArea(20, 40);
		tfeld.setLineWrap(true);
		tfeld.setEditable(false);
		JPanel panel = new JPanel();
		panel.add(tfeld);


		contp = new JPanel();
		contp.setLayout(content);
		contp.add(oben, BorderLayout.NORTH);
		contp.add(tfeld, BorderLayout.CENTER);
		contp.add(rechts, BorderLayout.EAST);
		setContentPane(contp);
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource()== sende) {
			// Änderung hier ( + "\n" für Zeilenumbruch)
			tfeld.append(eingabe.getText() + "\n"); 
			eingabe.setText("");
			// Änderung hier ( Focus wird nach Senden wieder auf Eingabe gelegt...
			// sieht einfach edler aus und ist komfortabler
			eingabe.requestFocus();
		}
		if (e.getSource()== zloesch) {
			String text = tfeld.getText();
			// Sucht den Zeilenumbruch und schneidet das davor aus
			// um es als Text für die Area zu nutzen
			try {
				tfeld.setText(text.substring(0,
						text.lastIndexOf("\n", text.length() - 2) + 1));
			} catch (StringIndexOutOfBoundsException ex) {
				tfeld.setText("");
			}
		}
	    if (e.getSource()== loesch) {
	        tfeld.setText("");
	    } 

	}


	public static void main(String args[]) {

		Zulassung Schplitz = new Zulassung();
		Schplitz.setSize(400, 300);
		Schplitz.setLocation(200, 200);
		Schplitz.setVisible(true);

	}

}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben