2015-09-02 1 views
0

Je suis capable d'ajouter ImageIcons à un JTextPane, mais lorsque je les ajoute, ils apparaissent au centre du JTextPane. Je ne peux pas trouver un moyen de contrôler où ils sont placés sur le JTextPane. Quelqu'un pourrait m'aider avec ça?Positionnement de l'image de contrôle sur JTextPane

Cette méthode fait la JTextPane:

private void loadTextPanel(JPanel contentPane) { 
    chatLogPanel = new JPanel(); 
    chatLogPanel.setLayout(null); 
    EmptyBorder eb = new EmptyBorder(new Insets(10, 10, 10, 10)); 

    DefaultStyledDocument document = new DefaultStyledDocument(); 
    chatLog = new JTextPane(document); 
    chatLog.setEditorKit(new WrapEditorKit()); 
    chatLog.setBorder(eb); 
    chatLog.setMargin(new Insets(5, 5, 5, 5)); 
    chatLogScrollPane = new JScrollPane(chatLog); 

    addComponent(chatLogPanel, chatLogScrollPane, 0, 0, 500, 240); 
    addComponent(contentPane, chatLogPanel, 0, 40, 500, 240); 
} 

Voici le code que je utilise pour ajouter une chaîne au panneau:

private static void appendToChatLog(JTextPane tp, String msg, Color c) { 
    chatLog.setEditable(true); 
    StyleContext sc = StyleContext.getDefaultStyleContext(); 
    AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c); 

    aset = sc.addAttribute(aset, StyleConstants.FontFamily, "Lucida Console"); 
    aset = sc.addAttribute(aset, StyleConstants.Alignment, Integer.valueOf(3)); 

    int len = tp.getDocument().getLength(); 
    tp.setCaretPosition(len); 
    tp.setCharacterAttributes(aset, false); 
    tp.replaceSelection(msg); 
    chatLog.setEditable(false); 
} 

Et ce que je suis actuellement à l'aide pour ajouter l'image au JTextPane:

BufferedImage image = generateBufferedImage(message.getImage()); 
Icon icon = new ImageIcon(image); 

StyleContext context = new StyleContext(); 
StyledDocument document = (StyledDocument) chatLog.getDocument(); 

Style labelStyle = context.getStyle(StyleContext.DEFAULT_STYLE); 

JLabel label = new JLabel(icon); 
StyleConstants.setComponent(labelStyle, label); 

try { 
    document.insertString(document.getLength(), "Ignored", labelStyle); 
} catch (BadLocationException badLocationException) { 
    badLocationException.printStackTrace(); 
} 
+1

Ajoutez votre code actuel, ajouter un tag java, casser des phrases et peut-être montrer une certaine façon ouput actuelle si le code ne suffit pas pour que ce soit clair. http://stackoverflow.com/help/how-to-ask –

Répondre

0

pour insérer un composant à un JTextPane et l'afficher comme un personnage, l'utilisation la méthode insertComponent. Pour insérer une icône, utilisez la méthode insertIcon.

assez intuitif est pas;)