我正在用Java开发一个简单的消息传递应用程序。我想在我的textArea的左侧和右侧显示消息,如所有whatsapp,messenger等。更改方向会更改所有文本的方向,因此它没有用。
非常感谢
您不能使用JTextArea。
一种解决方案是使用a JTextPane并为插入的每一行文本设置属性:
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(); } }); */ } }