Ich versuche in Java (mit AWT) einen kleinen Text-Editor zuschreiben, leider funktioniert das einfügen und ausschneiden von Text nicht. In der ersten Zeile funktioniert es aber sobald mehrere Zeilen im Spiel sind gehts schief.
P.S. Wie bekomme ich es hin das die Cursor Position in einem DOS-Fenster angezeigt wird? Das ich dazu getCaretPosition benutzen muss weiß ich aber ich weiß nicht wo ich den System.out.println() setzen muss.
Code:
import java.awt.*;
import java.awt.event.*;
public class Editor extends Frame
{
private TextArea textFeld;
public static void main(String [] a)
{
Editor ed = new Editor();
}
Editor()
{
this.setBounds(50, 50, 800, 600);
this.setMenuBar(new MenuLeiste());
textFeld = new TextArea();
this.add(textFeld);
this.setBackground(Color.WHITE);
this.setTitle("Editor");
this.setVisible(true);
this.addWindowListener(new Schliesser());
}
public void setzeText(String x)
{
textFeld.setText(x);
}
public String liesSelektiertenText()
{
return textFeld.getSelectedText();
}
public void ausschneiden()
{
int anfang = textFeld.getSelectionStart();
int ende = textFeld.getSelectionEnd();
textFeld.replaceRange("", anfang, ende);
}
public void einfuegen(String x)
{
int b = textFeld.getCaretPosition();
textFeld.insert(x,b);
}
}
Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
public class MenuEintragAusschneiden extends MenuItem implements ActionListener
{
MenuEintragAusschneiden()
{
super("Ausschneiden");
this.addActionListener(this);
}
public void actionPerformed(ActionEvent x)
{
MenuItem mi = (MenuItem) x.getSource();
Menu m = (Menu) mi.getParent();
MenuBar mb = (MenuBar) m.getParent();
Editor ed = (Editor) mb.getParent();
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
String s = ed.liesSelektiertenText();
StringSelection inhalt = new StringSelection(s);
cb.setContents(inhalt, null);
ed.ausschneiden();
}
}
Code:
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
public class MenuEintragEinfuegen extends MenuItem implements ActionListener
{
MenuEintragEinfuegen()
{
super("Einfügen");
this.addActionListener(this);
}
public void actionPerformed(ActionEvent x)
{
MenuItem mi = (MenuItem) x.getSource();
Menu m = (Menu) mi.getParent();
MenuBar mb = (MenuBar) m.getParent();
Editor ed = (Editor) mb.getParent();
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable inhalt = cb.getContents(this);
try
{
String s = (String) inhalt.getTransferData(DataFlavor.stringFlavor);
ed.einfuegen(s);
}
catch(Throwable e)
{
System.err.println("Fehler :" + e);
}
}
}
P.S. Wie bekomme ich es hin das die Cursor Position in einem DOS-Fenster angezeigt wird? Das ich dazu getCaretPosition benutzen muss weiß ich aber ich weiß nicht wo ich den System.out.println() setzen muss.