java - Java Swing 不显示重复样式

标签 java user-interface swing

我对我正在处理的项目的一部分有疑问。我想使用 Java Swing 显示一些表情符号,但是它不允许我显示连续的相同样式:

效果很好:Smile Sad Grin

这不起作用:微笑微笑微笑

我正在使用 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)));
        }   

^ 将样式应用于已解析的文本。

所以我的问题是:Styled Document 是否具有某种属性,因此当我有一个接一个相同的样式时,它不会正确显示它们?

编辑:每个文本都使用 String Tokenizer 分解,我让它正确解析,并应用适当的样式。

最佳答案

如果连续运行的文本有多个样式,样式将被折叠。也就是说,多行具有相同样式的文本将合并为一行文本。听起来您正在显示仅基于样式的图像。如果您针对给定样式中的字符数输出图像,而不仅仅是出现一种样式,您将获得多张图像输出。

或者,不是为每个表情符号使用不同的样式,而是使用通用的“表情符号”样式,并根据文本呈现适当的图像。例如。 :-) 带有表情符号的样式会呈现笑脸。和 :-):-) 将呈现两个笑脸。通过这样做,您可以在文档内容和呈现的内容之间保持有意义的关系。

关于java - Java Swing 不显示重复样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3126689/

相关文章:

java - 可以假设 Java Concurrent Mark Sweep Garbage Collector 在 Linux 和 Mac 以及 Windows 上同样出色吗?

java - 禁用键盘和鼠标

ios - 自动布局 - 以编程方式垂直排列元素并在元素之间留有空间?

java - 如何在 JTable 单元格中显示动画

java - JComponent PaintComponent 未出现在面板上

Java Swing 动态网格

java - LeetCode使用mapToInt编译错误,在本地工作

java - 使用 Java servlet 进行视频下载/流式传输

java - 是否可以在运行时更改 UI 并将更改保存在 android 应用程序中?

java - 定时器/秒表 GUI