Повторяющиеся стили не отображаются в Java Swing - PullRequest
2 голосов
/ 27 июня 2010

У меня проблема с частью проекта, над которым я работаю.Я хочу отображать некоторые смайлики, используя Java Swing, однако он не позволяет мне отображать последовательные идентичные стили:

Это прекрасно работает: Smile Sad Grin

Это не работает: Smile SmileSmile

Я пользуюсь Styled Document и у меня мало опыта с этим.Код выглядит следующим образом:

       public static void addStylesToDocument(StyledDocument doc) {
        //Initialize some styles.
        ImageIcon laugh = new ImageIcon("laugh.gif");
        ImageIcon sad  = new ImageIcon("sad.gif");
        ImageIcon tongue = new ImageIcon("tongue.gif");
        ImageIcon smile = new ImageIcon("smile.gif");
        ImageIcon cry = new ImageIcon("cry.gif");

        Style def = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);

        Style regular = doc.addStyle("regular", def);
        StyleConstants.setFontFamily(def, "SansSerif");

        Style s = doc.addStyle("laugh", def);
        StyleConstants.setIcon(s, laugh);

        Style sads = doc.addStyle("sad", regular);
        StyleConstants.setIcon(sads,sad);


        s = doc.addStyle("tongue", regular);
        StyleConstants.setIcon(s,tongue);


        s = doc.addStyle("smile", regular);
        StyleConstants.setIcon(s,smile);


        s = doc.addStyle("cry", regular);
        StyleConstants.setIcon(s,cry);
    }

^ добавление стилей в мой документ

        for (i=0;i<typeOfText.size();i++){
            System.out.println(parsedText.get(i) + " " +  typeOfText.get(i) + " " + i + " " + doc.getLength());
            doc.insertString(doc.getLength(),parsedText.get(i),doc.getStyle(typeOfText.get(i)));
        }   

^ применение стилей к анализируемому тексту.

Итак, мой вопрос:обладает ли стиль документа определенным свойством, чтобы при наличии одних и тех же стилей он не отображался правильно?

РЕДАКТИРОВАТЬ: Каждый текст разбивается с помощью String Tokenizer, я получаючтобы правильно разобрать и применить соответствующий стиль.

Ответы [ 2 ]

1 голос
/ 27 июня 2010

Другим вариантом может быть использование метода insertIcon () JTextPane.

1 голос
/ 27 июня 2010

Стили будут свернуты, если в последовательных текстовых последовательностях будет несколько стилей.То есть несколько фрагментов текста с одинаковым стилем будут объединены в один фрагмент текста.Похоже, вы отображаете изображение только на основе стиля.Вы получите вывод нескольких изображений, если вы выводите изображение для количества символов в данном стиле, а не только для присутствия стиля.

В качестве альтернативы, вместо использования отдельного стиля для каждого смайлика, используйте общийстиль "смайлик" и визуализации соответствующего изображения на основе текста.Например :-) в стиле смайлика создаст смайлик.И :-) :-) окажет два смайлика.Делая это, вы поддерживаете значимую связь между содержанием документа и тем, что представлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...