J'essaie de créer une fenêtre de discussion très simple qui a simplement la capacité d'afficher du texte, que j'ajoute de temps en temps. Cependant, je reçois l'erreur de temps d'exécution suivante lorsque vous tentez d'ajouter du texte à la fenêtre:Java Simple Chat Box
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)
Voici la classe pour gérer les opérations de base:
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");
}
}
}
S'il existe un moyen plus simple de le faire , par tous les moyens laissez-moi savoir. J'ai seulement besoin que le texte soit d'un type de police unique, et non modifiable par l'utilisateur. En dehors de cela, je dois juste être en mesure d'ajouter du texte à la volée.
Je pense qu'il est une faute de frappe, devrait être 'getView()' 'non getViewportView()'. – JRL
@JRL: Vous avez raison; J'ai juste supposé que les tutoriels de Swing l'avaient bien fait. Ce genre de mal à mon point de les lire. –
Même si la faute de frappe est corrigée, le problème est que le volet de texte n'a pas été ajouté à la fenêtre, ce qui ne résoudra pas le problème. – camickr