У меня есть Jpanel с Boxlayout, и некоторые JTextPane и JPanel будут добавляться к нему динамически. Я хочу установить предпочтительный размер JTextPanes в соответствии с их содержимым. Я использую StyledDocument для своего JTextPane. Как я могу это сделать?
Изменить: когда я создаю новый JTextPane, у меня есть его содержимое, и оно не изменится. вот мой код:
public void display(final String text){
StyleContext sc = new StyleContext();
final DefaultStyledDocument doc = new DefaultStyledDocument(sc);
Style defaultStyle = sc.getStyle(StyleContext.DEFAULT_STYLE);
final Style style = sc.addStyle("MainStyle", defaultStyle);
JTextPane pane = new JTextPane(){
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public Dimension getMinimumSize(){
return new Dimension(text.length()*5, getContentHeight(text.length()*5,text));
}
@Override
public Dimension getMaximumSize(){
return new Dimension(430, getContentHeight(text.length()*5,text));
}
};
receive.setStyledDocument(doc);
receive.setEditable(false);
receive.setPreferredSize(new Dimension(text.length()*5, getContentHeight(text.length()*5,text)));
try {
doc.insertString(doc.getLength(),text,style);
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Jpanel.add(pane);
}
public int getContentHeight(int i, String content) {
JEditorPane dummyEditorPane=new JEditorPane();
dummyEditorPane.setSize(i,Short.MAX_VALUE);
dummyEditorPane.setText(content);
return dummyEditorPane.getPreferredSize().height;
}
проблема в getMinimumSize() и getMaximumSize() и setPreferredSize() методе! также по ширине, которую я установил для dummyEditorPane.setSize(i,Short.MAX_VALUE);, так как я могу установить размер исправления для текстовой панели?