gpt4 book ai didi

Java Swing JTextArea 左右书写

转载 作者:行者123 更新时间:2023-12-01 19:32:37 24 4
gpt4 key购买 nike

我正在使用 Java 制作一个简单的消息应用程序。我想在我的文本区域的左侧和右侧显示消息,如所有 Whatsapp、Messenger 等。更改方向会更改所有文本方向,因此它没有用。

非常感谢

最佳答案

您不能使用 JTextArea。

一种解决方案是使用 JTextPane 并为插入的每一行文本设置属性:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;

public class TextPaneChat
{
private static void createAndShowGUI()
{
JTextPane textPane = new JTextPane();

StyledDocument doc = textPane.getStyledDocument();

SimpleAttributeSet left = new SimpleAttributeSet();
StyleConstants.setAlignment(left, StyleConstants.ALIGN_LEFT);
StyleConstants.setForeground(left, Color.RED);

SimpleAttributeSet right = new SimpleAttributeSet();
StyleConstants.setAlignment(right, StyleConstants.ALIGN_RIGHT);
StyleConstants.setForeground(right, Color.BLUE);

try
{
doc.insertString(doc.getLength(), "Are you busy tonight?", left );
doc.setParagraphAttributes(doc.getLength(), 1, left, false);
doc.insertString(doc.getLength(), "\nNo", right );
doc.setParagraphAttributes(doc.getLength(), 1, right, false);
doc.insertString(doc.getLength(), "\nFeel like going to a movie?", left );
doc.setParagraphAttributes(doc.getLength(), 1, left, false);
doc.insertString(doc.getLength(), "\nSure", right );
doc.setParagraphAttributes(doc.getLength(), 1, right, false);
}
catch(Exception e) { System.out.println(e); }

JFrame frame = new JFrame("Text Pane Chat");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add( new JScrollPane( textPane ) );
frame.setLocationByPlatform( true );
frame.setSize(200, 200);
frame.setVisible( true );
}

public static void main(String[] args)
{
EventQueue.invokeLater( () -> createAndShowGUI() );
/*
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
*/
}
}

关于Java Swing JTextArea 左右书写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59247038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com