Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing未显示重复的样式_Java_User Interface_Swing - Fatal编程技术网

Java Swing未显示重复的样式

Java Swing未显示重复的样式,java,user-interface,swing,Java,User Interface,Swing,我对我正在进行的项目的一部分有问题。我想使用Java Swing显示一些表情,但是它不允许我显示连续的相同样式: 这很管用:微笑,悲伤,露齿而笑 这不管用:微笑 我正在使用样式化文档,对它几乎没有经验。代码如下: public static void addStylesToDocument(StyledDocument doc) { //Initialize some styles. ImageIcon laugh = new ImageIcon("

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

这很管用:微笑,悲伤,露齿而笑

这不管用:微笑

我正在使用样式化文档,对它几乎没有经验。代码如下:

       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)));
        }   

用于(i=0;i如果连续运行的文本中有多个样式,则样式将被折叠。也就是说,具有相同样式的多个文本运行将合并为一个文本运行。听起来您只是基于样式显示了一个图像。如果您输出的图像中的字符数,您将获得多个图像输出给定的样式,而不仅仅是样式的存在


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

另一个选项可能是使用JTextPane的insertIcon()方法