einfacher TextEditor

Status
Nicht offen für weitere Antworten.

Han

Bekanntes Mitglied
Hallo......und zwar bastle ich grad an einem einfachen TextEditor herum. Jetzt frage ich mich wie ich das Panel machen soll in dem der Benutzer den Text eingibt. Unser Übungsleiter hat uns als Tipp gegeben das dieses Panel eine
selbstgezeichnete Komponente sein soll und kein TextArea.....

Nun jetzt hab ich das Panel mal so realisiert:

Code:
public class TextEditorPanel extends JComponent{

	/** The dataModel, where the text is saved. */
	private TextModel textM;
	
	/** Constructor, which initialises the dataModel. */
	public TextEditorPanel(TextModel textM){
		this.textM = textM;
	}

	TextEventListener listener = new TextEventListener(){
		public void textChanged(){
			repaint();
		}
	};
	
	private void handleKeyTyped(KeyEvent ke) {
		System.out.println("Hallo");
		
	}
	
	public void paint(Graphics g) {
		super.paint(g);
		
		setFocusable(true);
		addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				requestFocus();
			}
		});
		
		addKeyListener(new KeyAdapter(){
			public void keyTyped(KeyEvent ke){
				handleKeyTyped(ke);
			}
		});
		
		
	}
}



Der Code:

Code:
 setFocusable(true);
		addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				requestFocus();
			}
		});
		
		addKeyListener(new KeyAdapter(){
			public void keyTyped(KeyEvent ke){
				handleKeyTyped(ke);
			}
		});

ist schon in der Angabe als Tipp gestanden denn nur so reagiert das Panel auf Tastatureingaben....aber bei mir rührt sich gar nichts....bzw. muss ich das Ganze ganz anders angehen? Steh irgendwie daneben wie ich weitermachen soll.....kann mir wer einen Tipp geben?

mfg,
Han
 

Han

Bekanntes Mitglied
Hallo...ok jetzt funktionierts.....nur diese blöde Hintergrundfarbe will er mir nciht annehmen (weiß) Er reagiert mir einfach nicht drauf und lässt alles transparent..warum ist das so bzw. was muss ich machen damit er mir die Hintergrundfarbe ohne umständliche Umwege (wie das Ganze z.b. in ein Panel packen) annimmt?

Code:
public class TextEditorPanel extends JComponent{

	/** The dataModel, where the text is saved. */
	private TextModel textM;
	
	private CommandHandler cmdHandler;
	
	/** Constructor, which initialises the dataModel. */
	public TextEditorPanel(TextModel textM){
		this.textM = textM;
		setFocusable(true);
		textM.addListener(listener);
		cmdHandler = new CommandHandler();
		
		addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				requestFocus();
			}
		});
		this.setBackground(Color.WHITE);
		addKeyListener(new KeyAdapter(){
			public void keyTyped(KeyEvent ke){
				handleKeyTyped(ke);
			}
		});
	}

	TextEventListener listener = new TextEventListener(){
		public void textChanged(){
			repaint();
		}
	};
	
	private void handleKeyTyped(KeyEvent ke) {
		char a = ke.getKeyChar();
		cmdHandler.doIt(new AppendCommand(textM,a));
	}
	
	public void paint(Graphics g) {
		g.drawString(textM.getText()+ "|", 40, 10);
	}
}

mfg,
Hannes
 

Han

Bekanntes Mitglied
Habs jetzt hinbekommen...dass sich keiner mehr den Kopf zerbrechen muss: Nur funktioniert das mit der neuen Zeile npch nciht so richtig....
Code:
public class TextEditorPanel extends JPanel{

	/** The dataModel, where the text is saved. */
	private TextModel textM;
	
	private CommandHandler cmdHandler;
	
	/** Constructor, which initialises the dataModel. */
	public TextEditorPanel(TextModel textM){
		super(true);
		this.textM = textM;
		setFocusable(true);
		textM.addListener(listener);
		cmdHandler = new CommandHandler();
		addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				requestFocus();
			}
		});
		this.setBackground(Color.WHITE);
		addKeyListener(new KeyAdapter(){
			public void keyTyped(KeyEvent ke){
				handleKeyTyped(ke);
			}
		});
	}

	TextEventListener listener = new TextEventListener(){
		public void textChanged(){
			repaint();
		}
	};
	
	private void handleKeyTyped(KeyEvent ke) {
		char a = ke.getKeyChar();
		cmdHandler.doIt(new AppendCommand(textM,a));
	}
	
	private int actualWidth = 0;
	
	
	public void paint(Graphics g) {
		super.paint(g);
		System.out.println(actualWidth);
		g.drawString(textM.getText()+ "|", 0, 10);
		
		actualWidth = actualWidth + 7;
		if(actualWidth >= getWidth()){
			actualWidth = 0;
			cmdHandler.doIt(new AppendCommand(textM,'\n'));
		}
	}
}
 

SamHotte

Top Contributor
Was ist denn CommandHandler für eine Klasse? Ich vermute mal, dass der Aufruf in paint() stört ... besser könnte sein, dort einfach mal vor dem drawString()-Aufruf die einzelnen Zeilen zerlegen und dann jede Zeile zeichnen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C einfacher Texteditor in Java AWT, Swing, JavaFX & SWT 3
N JavaFX Einfacher Taschenrechner mit Scene Builder und Java FX AWT, Swing, JavaFX & SWT 0
EinNickname9 Einfacher parser funktioniert nicht AWT, Swing, JavaFX & SWT 2
A Swing Vokabeltrainer zeigt in einfacher Ausführung nichts an AWT, Swing, JavaFX & SWT 5
J Progressbar mit einfacher Funktion AWT, Swing, JavaFX & SWT 6
2 Einfacher Baum visualisieren. AWT, Swing, JavaFX & SWT 11
R einfacher mp3 player AWT, Swing, JavaFX & SWT 18
N einfacher ActionListener und NullPointer AWT, Swing, JavaFX & SWT 2
V ButtonGroup einfacher überwachen? AWT, Swing, JavaFX & SWT 7
S Einfacher Klick aber mouseClicked() zweimal aufgerufen AWT, Swing, JavaFX & SWT 3
MaxG. JavaFX JavaFX Texteditor AWT, Swing, JavaFX & SWT 4
RalleYTN Swing Menü für Texteditor (Rechtsklick) AWT, Swing, JavaFX & SWT 4
S Zeilennummern links im Texteditor AWT, Swing, JavaFX & SWT 2
Y SWT Rich Texteditor - Empfehlungen AWT, Swing, JavaFX & SWT 9
K selbstgeschrieben Texteditor: empfangen von KeyEvents AWT, Swing, JavaFX & SWT 2
E Swing Texteditor AWT, Swing, JavaFX & SWT 6
R Simpler Texteditor AWT, Swing, JavaFX & SWT 3
M Texteditor Untermenüs erstellen AWT, Swing, JavaFX & SWT 4
M Texteditor Komponente gesucht AWT, Swing, JavaFX & SWT 5
mangaka TextEditor - Zeilennummerierung AWT, Swing, JavaFX & SWT 12
T Frage zu Texteditor Option speichern AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben