Обработка - трехстрочный текстовый редактор и переход к следующей строке? - PullRequest
1 голос
/ 08 апреля 2020

Мне нужно написать программу для набора текста, чтобы создать «трехстрочный» текстовый редактор. Если длина входной строки превышает длину строки (40 символов), она будет автоматически перемещена на следующую строку.

Это мой код:

String word = "";

void setup() {
    size(1000, 600);
    textSize(26);
    fill(0);
}

void draw() {
    background(255);
    text(word, 0, 0, width, height);
}

void keyPressed() {
    int lineBreak = word.length();
    if(lineBreak > 39) {
        word = word + "\n"; 
    }
    else {
        word = word + key;
    }
}

Всякий раз, когда Я запускаю проблему, длина строки останавливается на 40 символах, но не переходит на следующую строку.

1 Ответ

0 голосов
/ 08 апреля 2020

text() не поддерживает разрывы строк. Вы должны хранить каждую строку в отдельной строке. Например, используйте StringList для хранения строк текста.

Создайте массив строк, в котором будут храниться готовые строки. Текущая строка все еще сохраняется в word:

StringList lines = new StringList();

Когда предел строки достигнут, добавьте строку в список и начните новую строку:

if(lineBreak > 39) {
    lines.append(word);
    word = ""; 
}

Определить lineheight Нарисуйте линии в oop. Вертикальное положение линии вычисляется как lineheight * (i + 1), где i - индекс строки:

int lineheight = 30;
for (int i = 0; i < lines.size(); i++) {
    String line = lines.get(i);
    text(line, 0, lineheight * (i + 1));
}
text(word, 0, lineheight * (lines.size() + 1));

См. Пример:

StringList lines = new StringList();
String word = "";

void setup() {
    size(1000, 600);
    textSize(26);
    fill(0);
}

void draw() {
    background(255);

    int lineheight = 30;
    for (int i = 0; i < lines.size(); i++) {
        String line = lines.get(i);
        text(line, 0, lineheight * (i + 1));
    }
    text(word, 0, lineheight * (lines.size() + 1));
}

void keyPressed() {
    int lineBreak = word.length();
    if(lineBreak > 39) {
        lines.append(word);
        word = ""; 
    }
    else {
        word += key;
    }
}
...