Jtextpane中每行的不同方向

时间:2017-11-12 14:29:18

标签: java text jtextpane

我想在JTextPane中追加文字,我让每一行都有不同的颜色,但当我试图从左到右,从右到左制作线条时,它不起作用

这是我的方法代码

private void appendToPane(JTextPane tp, String msg, Color c , String rientation)
{
        ComponentOrientation ornt = ComponentOrientation.LEFT_TO_RIGHT;

        if(orientation.equals("left"))
            ornt = ComponentOrientation.LEFT_TO_RIGHT;


        StyleContext sc = StyleContext.getDefaultStyleContext();
        AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c);

        AttributeSet or     =  sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Orientation , StyleConstants.ALIGN_RIGHT );
        AttributeSet fnt    = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Background , Color.YELLOW);
        AttributeSet fontSize = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.FontSize, 25);

         // aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Lucida Console");
         // aset = sc.addAttribute(aset, StyleConstants.Alignment, StyleConstants.ALIGN_JUSTIFIED);

        int len = tp.getDocument().getLength();
        tp.setCaretPosition(len);
        tp.setCharacterAttributes(aset, false);
        tp.setCharacterAttributes(or , false);
        tp.setCharacterAttributes(fnt, false);
        tp.setCharacterAttributes(fontSize, false);


//      if(orientation.equals("left"))
//          tp.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
//      else
//          tp.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

//      if(orientation != null)
//          tp.setAlignmentX(Component.RIGHT_ALIGNMENT);
//      else
//          tp.setAlignmentX(orientation);

//      tp.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        tp.replaceSelection(msg);
    }

1 个答案:

答案 0 :(得分:0)

因此,如果您的目标是更改对齐方式,则以下是您的代码示例:

 

如果您的目标是更改文字的方向,请查看关于thisBidirectional text

如果您的目标是从右到左书写文字,您只需在文档中添加DocumentFilter并从那里反转文档的逻辑(向后将变为向前,插入符将在之前移动插入而不是之后,插入的文本将被镜像,等等)

如果你能更清楚地表明你的预期结果是什么,我们可能会对你有所帮助。