duddits
Goto Top

AWT

Wie kann man etwas bei einer TextArea makieren???

Hi,

ich möchte einen Editor schreiben. Möchte aber AWT benutzen und kein Swing.
Habe derzeit Probleme die Typischen Bearbeiten Funktionen, wie z.B. makieren, kopieren, ausschneiden, rückgängig etc. zu verwirklichen.
Gibt es dazu schon vorgefärtigte Klassen,Methoden, etc. ?
Wenn ja welche ?
Oder kann mir jemand einen Tipp oder Hinweis geben wie ich das realisieren kann?
Falls es sich doch nicht so leicht mit AWT realisieren lässt, bin ich auch gewillt auf andere Bibiliotheken oder Klassen zurückzugreifen(z.B. SWT, Swing).

Bin über jeden Hinweis dankbar. face-big-smile

mfg duddits

Content-ID: 20927

Url: https://administrator.de/contentid/20927

Ausgedruckt am: 21.11.2024 um 17:11 Uhr

duddits
duddits 06.12.2005 um 22:50:55 Uhr
Goto Top
Hi,

da keiner antwortet. Habe das Problem mittlweweile selber gelöst, doch jetzt würde ich gerne wissen wie ich die Zwischenablage (am besten Linux und Windows , aber primär Windows) nutzen kann. Den meine Kopier Funktoion ist nur inerhalb de Editors gültig.
Ich möchte aber das dies überall gültig ist.

mfg duddits
duddits
duddits 13.12.2005 um 22:42:37 Uhr
Goto Top
Hi,

da sich anscheinend nicht viele mit java hier auskennen, möchte ich den jenigen doch mal kutz sagen wie jetzt mein problem gelöst habe.
Habe mich dazu genötigt mit swing zu arbeiten. Diese Klasse bietet auch schon direkt die methoden zum kopieren, ausschneiden oder einfügen.
Hier ein ausschnitt aus meinen Programm in der Version 0.1
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.undo.*;

public class Version2 extends Frame implements ActionListener {

	final JTextArea ta;

	static Version2 ver;

	String savepath = "";  

	String save;

	Object content;
	
	private Image icon, image;

	final UndoManager undomanager;

	public Version2() {
		super("Jaditor (c) by Daniel Baier");  
		setSize(400, 450);
		setBackground(Color.black);
		setLayout(null);
		setMenuBar(new MenuForVersion2(this));
		undomanager = new UndoManager();
		undomanager.setLimit(10);
		ta = new JTextArea();
		ta.setAutoscrolls(true);
		ta.setBounds(20, 60, 350, 365);

		//ver.getContentPane().add( new JScrollPane(textarea) );
		ta.getDocument().addUndoableEditListener(undomanager);

		undomanager.setLimit(1000);
		add(ta);

		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				try {
					String optionen = { "Ja", "Nein", "Abruch" };  

					int n = JOptionPane
							.showOptionDialog(
									null,
									"Willst du wirklich Jaditor beenden ? \n Alle Änderungen werden verworfen.", // Fragetext  
									"Jaditor", // Titel  
									JOptionPane.YES_NO_CANCEL_OPTION,
									JOptionPane.QUESTION_MESSAGE, // Icon
									null, optionen, optionen);

					if (n == JOptionPane.YES_OPTION) {
						System.exit(0);
					}
					if (n == JOptionPane.NO_OPTION) {
						if (savepath == "") {  

							FileDialog fd = new FileDialog(ver,
									"Speichern unter..", FileDialog.SAVE);  
							fd.show();

							FileWriter fw = new FileWriter("/"  
									+ fd.getDirectory() + "/" + fd.getFile()  
									+ ".jad");  

							BufferedWriter bw = new BufferedWriter(fw);
							bw.write(ta.getText());

							bw.flush();
							bw.close();
							savepath = "/" + fd.getDirectory() + "/"  
									+ fd.getFile() + ".jad";  

						} else {

							FileWriter fw = new FileWriter(savepath);

							BufferedWriter bw = new BufferedWriter(fw);
							bw.write(ta.getText());
							bw.flush();
							bw.close();

						}
					}
				} catch (Exception ee) {

				}
			}
		});
		


	}

	public void actionPerformed(ActionEvent e) {
		try {

			String actions = e.getActionCommand();
			if (actions.equals("Beenden")) {  

				String optionen = { "Ja", "Nein", "Abruch" };  
				
				int n = JOptionPane
						.showOptionDialog(
								null,
								"Willst du wirklich Jaditor beenden ? \n Alle Änderungen werden verworfen.", // Fragetext  
								"Jaditor", // Titel  
								JOptionPane.YES_NO_CANCEL_OPTION,
								JOptionPane.QUESTION_MESSAGE, // Icon
								null, optionen, optionen);

				if (n == JOptionPane.YES_OPTION) {
					System.exit(0);
				}
				if (n == JOptionPane.NO_OPTION) {
					if (savepath == "") {  

						FileDialog fd = new FileDialog(ver,
								"Speichern unter..", FileDialog.SAVE);  
						fd.show();

						FileWriter fw = new FileWriter("/" + fd.getDirectory()  
								+ "/" + fd.getFile() + ".jad");  

						BufferedWriter bw = new BufferedWriter(fw);
						bw.write(ta.getText());

						bw.flush();
						bw.close();
						savepath = "/" + fd.getDirectory() + "/" + fd.getFile()  
								+ ".jad";  

					} else {

						FileWriter fw = new FileWriter(savepath);

						BufferedWriter bw = new BufferedWriter(fw);
						bw.write(ta.getText());
						bw.flush();
						bw.close();

					}
				}
			} else if (actions.equals("Alles makieren")) {  
				ta.selectAll();

			} else if (actions.equals("Speichern")) {  
				try {
					if (savepath == "") {  

						FileDialog fd = new FileDialog(ver,
								"Speichern unter..", FileDialog.SAVE);  
						fd.show();

						FileWriter fw = new FileWriter("/" + fd.getDirectory()  
								+ "/" + fd.getFile() + ".jad");  

						BufferedWriter bw = new BufferedWriter(fw);
						bw.write(ta.getText());

						bw.flush();
						bw.close();
						savepath = "/" + fd.getDirectory() + "/" + fd.getFile()  
								+ ".jad";  

					} else {

						FileWriter fw = new FileWriter(savepath);

						BufferedWriter bw = new BufferedWriter(fw);
						bw.write(ta.getText());
						bw.flush();
						bw.close();

					}

				} catch (IOException ioe) {
					System.err.println(ioe.getMessage());
				}

			} else if (actions.equals("Speichern unter..")) {  

				FileDialog fd = new FileDialog(ver, "Speichern unter..",  
						FileDialog.SAVE);
				fd.show();

				try {
					FileWriter fw = new FileWriter("/" + fd.getDirectory()  
							+ "/" + fd.getFile() + ".jad");  

					BufferedWriter bw = new BufferedWriter(fw);
					bw.write(ta.getText());
					bw.flush();
					bw.close();
					savepath = "/" + fd.getDirectory() + "/" + fd.getFile()  
							+ ".jad";  
				} catch (IOException ioex) {
				}
			} else if (actions.equals("Öffnen")) {  

				FileDialog fd = new FileDialog(ver, "Öffnen", FileDialog.LOAD);  
				fd.show();

				try {

					BufferedReader br = new BufferedReader(new FileReader(fd
							.getDirectory()
							+ "/" + fd.getFile()));  

					StringBuffer sb = new StringBuffer();
					String line;

					for (int i = 1; i < 999999999; i++) {
						line = br.readLine();
						if (line == null) {
							break;
						}
						sb = sb.append(line + "\n");  
						ta.setText(sb.toString());
					}

					br.close();
					savepath = "/" + fd.getDirectory() + "/" + fd.getFile()  
							+ ".jad";  
				} catch (IOException ioex) {
				}

			} else if (actions.equals("Neu")) {  
				savepath = "";  
				ta.setText("");  
			} else if (actions.equals("Kopieren")) {  
				ta.copy();
			} else if (actions.equals("Einfügen")) {  
				ta.paste(); // mezhode von swing zum einfügen aus zwischenablage
			} else if (actions.equals("Ausschneiden")) {  
				ta.cut();
			}else if (actions.equals("Löschen")) {  
				ta.replaceSelection("");  
			}
		} catch (Exception ex) {
			String optionen = { "OK" };  

			int n = JOptionPane.showOptionDialog(null, ex.toString(), // Fragetext
					"Jaditor - Fehler", // Titel  
					JOptionPane.OK_OPTION, JOptionPane.ERROR_MESSAGE, // Icon
					null, optionen, optionen);
		}
	}

	public static void main(String args) {
		Splash sp = new Splash("logo.jpg",ver);  
		try{
			Thread.sleep(6000);
			sp.setVisible(false);
		}catch(Exception e){
			
		}
		ver = new Version2();
		ver.setVisible(true);
	}
}

Das tolle daran es funktioniert unter windows und linux. face-smile

mfg duddits