gpt4 book ai didi

Java 简单聊天框

转载 作者:行者123 更新时间:2023-11-29 08:18:31 24 4
gpt4 key购买 nike

我正在尝试创建一个非常简单的聊天窗口,它只能够显示一些我不时添加的文本。但是,在尝试将文本附加到窗口时出现以下运行时错误:

java.lang.ClassCastException: javax.swing.JViewport cannot be cast to javax.swing.JTextPane
at ChatBox.getTextPane(ChatBox.java:41)
at ChatBox.getDocument(ChatBox.java:45)
at ChatBox.addMessage(ChatBox.java:50)
at ImageTest2.main(ImageTest2.java:160)

这是处理基本操作的类:

public class ChatBox extends JScrollPane {

private Style style;

public ChatBox() {

StyleContext context = new StyleContext();
StyledDocument document = new DefaultStyledDocument(context);

style = context.getStyle(StyleContext.DEFAULT_STYLE);
StyleConstants.setAlignment(style, StyleConstants.ALIGN_LEFT);
StyleConstants.setFontSize(style, 14);
StyleConstants.setSpaceAbove(style, 4);
StyleConstants.setSpaceBelow(style, 4);

JTextPane textPane = new JTextPane(document);
textPane.setEditable(false);

this.add(textPane);
}

public JTextPane getTextPane() {
return (JTextPane) this.getComponent(0);
}

public StyledDocument getDocument() {
return (StyledDocument) getTextPane().getStyledDocument();
}

public void addMessage(String speaker, String message) {
String combinedMessage = speaker + ": " + message;
StyledDocument document = getDocument();

try {
document.insertString(document.getLength(), combinedMessage, style);
} catch (BadLocationException badLocationException) {
System.err.println("Oops");
}
}
}

如果有更简单的方法,请务必告诉我。我只需要文本为单一字体类型,并且用户无法编辑。除此之外,我只需要能够即时添加文本。

最佳答案

你有两个选择:

  1. JTextPane 存储在一个成员变量中,并在 getTextPane() 中返回它。
  2. 修改getTextPane以返回JViewPort的 View ,像这样

    return (JTextPane) getViewport().getView();

参见 Swing tutorials了解更多详情。

此外,正如 camickr(和教程)所指出的,将 addJScrollPane 一起使用是不正确的。您应该将组件传递给构造函数或使用 setViewportView .

附带说明一下,除非绝对必要(更喜欢组合而不是继承),否则我尽量不子类化 Swing 组件。但这与问题并不特别相关。

关于Java 简单聊天框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2435854/

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