Image

Imagejdevelop wrote in Imageru_java

AWT question

вот есть допустим такая задачка - сделать так, чтобы в TextArea по enter срабатывал экшин, а по
Ctrl+Enter вставлялся бряк

я решил сию проблему методом "в лоб"
потому что при нажатии enter обработчик насчет e.modifiers = 0 не канал (модель событий 1.1)

можно сделать покрасивее?


import java.awt.*;
import java.awt.event.KeyEvent;

public class KeyTextArea extends TextArea {

    protected boolean isControlPressed = false;

    public KeyTextArea(MessengerWindow parent, String s, int i1, int i2, int i3) {
        super(s, i1, i2, i3);
        this.parent = parent;
    }

    public boolean handleEvent(Event e) {
        if ((e.modifiers & (Event.CTRL_MASK | Event.SHIFT_MASK)) > 0) {
            isControlPressed = true;
        } else {
            isControlPressed = false;
        }
        if (e.id == Event.KEY_PRESS && e.key == KeyEvent.VK_ENTER) {
            if (!isControlPressed) {
		e.id = Event.ACTION_EVENT;                                                                          
		e.arg="Send";                                                                                       
		e.key=0;     
                isControlPressed = false;
            } else {
                append("\n");
            }
        }
        return super.handleEvent(e);
    }

}