Witam,
mój problem jest taki, że mając komponent JTextPane dodaję do niego komponenty JLabel za pomocą takiej oto metody
public void sendMessage(Message pMessage) {
JLabel label = new JLabel(pMessage.getText() + "\n");
Font font = new Font("Verdana", Font.PLAIN, 12);
label.setFont(font);
label.setVisible(true);
this.outputTextPane.insertComponent(label);
}
(klasa Message to moja klasa i tam jest przechowywany tekst wiadomości póki co, ale nie w tym jest błąd).
Chodzi o to, że jeśli dodam kilkanaście tych JLabeli to zamiast przechodzić do nowego wiersza w JTextPane, to zwyczajnie brnie dalej i dodaje się w tej samej linii cały czas, co dziać się nie może. Zależy mi też na tym, żeby był to JTextPane, bo chcę tam wsadzać swingowe kontrolki, a JEditorPane nie bardzo się nadaje do tego.
Kod JTextPane (+JScrollPane):
// StyleContext context = new StyleContext();
// StyledDocument document = new DefaultStyledDocument(context);
//
// Style style = context.getStyle(StyleContext.DEFAULT_STYLE);
// StyleConstants.setAlignment(style, StyleConstants.ALIGN_LEFT);
// StyleConstants.setFontSize(style, 14);
// StyleConstants.setSpaceAbove(style, 4);
// StyleConstants.setSpaceBelow(style, 4);
// this.textPane = new JTextPane(document);
this.textPane = new JTextPane();
JScrollPane scrl = new JScrollPane(this.textPane);
scrl.setBounds(5, 5, this.chatPanel.getSize().width - 10,
this.chatPanel.getSize().height - 10);
scrl.setViewportView(this.textPane);
scrl.setBorder(BorderFactory.createLineBorder(Color.gray));
scrl.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrl.setMaximumSize(new Dimension(this.chatPanel.getSize().width - 15,
this.chatPanel.getSize().height - 15));
scrl.setPreferredSize(new Dimension(this.chatPanel.getSize().width - 15,
this.chatPanel.getSize().height - 15));
this.textPane.setBounds(0, 0, scrl.getWidth(), scrl.getHeight());
this.textPane.setMaximumSize(new Dimension(scrl.getWidth(),
scrl.getHeight()));
this.textPane.setBorder(null);
this.textPane.setEditable(false);
this.textPane.setFocusable(false);
this.textPane.setVisible(true);
this.chatPanel.add(scrl);
Linie zakomentowane to nieudane próby naprawienia tego błędu.
Problem jest właśnie taki, że musi mi się to albo dodawać w nowej linii zamiast w jednej, nie wiem już co mam tam zmienić żeby tak się działo.
Tekst wyświetla się dobrze (znaczy się przechodzi do nowych linii), komponenty wyświetlają się w jednym wierszu.
Proszę o pomoc.