【问题标题】:Splitting JText Area into two将文本区域一分为二
【发布时间】:2018-05-03 17:08:34
【问题描述】:

我目前正在用 Java 编写一个 messanger 程序。我有一个框,我在其中输入我的消息,另一个框在我发送它并收到回复后出现。第二个框是 JText 区域,我想知道如何让我的消息出现在框的右侧,而响应出现在左侧(如 iMessage)。我似乎无法找到如何相应地在 jTextArea 中定位字符串。

【问题讨论】:

  • 你能发布一些关于你所做的事情的代码,还可能是一个屏幕截图的链接。

标签: java jtextarea


【解决方案1】:

不要使用JTextArea,而是尝试使用JTextPane,如下所示。

JTextPane textPane = new JTextPane();
frame.getContentPane().add(textPane, BorderLayout.CENTER);
textPane.setContentType("text/html");
textPane.setEditable(false);

创建JTextPane后添加如下样式。

StyledDocument doc=textPane.getStyledDocument();
SimpleAttributeSet right =new SimpleAttributeSet();
SimpleAttributeSet left =new SimpleAttributeSet();

StyleConstants.setAlignment(right, StyleConstants.ALIGN_RIGHT);
StyleConstants.setAlignment(left, StyleConstants.ALIGN_LEFT);

现在将文本添加到JTextPane

   try {

        doc.insertString(0, "First Line aligned left\n", left);
        doc.insertString(doc.getLength(), "Second line Aligned right\n", right);

    } catch (Exception e) {
        e.printStackTrace();
    }

你会得到如下结果。

希望你得到你想要的答案。

【讨论】:

  • 效果很好,谢谢!有没有办法确保较长的字符串输入不会通过 JTextPane 区域的中线?
  • 试试这些行,StyleConstants.setRightIndent(left, (float) textPane.getWidth()/2); StyleConstants.setLeftIndent(right, (float) textPane.getWidth()/2);
  • 我试过了,但是没有用。文本继续超过半点线。有什么想法吗?
  • 在设计视图中尝试将 JTextPane 的布局更改为“绝对布局”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多