Отображать и добавлять значки в JEditorPane / JTextArea, каждый значок отображается в новой строке? - PullRequest
0 голосов
/ 15 января 2012

Я пытаюсь отобразить системные значки для расширения файла JEditorpane, которое я могу отобразить, но отображается только последний значок? Я хочу добавить и отобразить каждый значок на новой строке?

String fileList[] = {".pdf", ".txt", ".doc", ".exe"}
JLabel label;
FileSystemView fsv = FileSystemView.getFileSystemView();
icon = fsv.getSystemIcon(File.createTempFile("file.", "." + filetype[i]));
label = new JLabel(icon);
StyleContext context = new StyleContext();
StyledDocument document = new DefaultStyledDocument(context);
Style labelStyle = context.getStyle(StyleContext.DEFAULT_STYLE);
StyleConstants.setComponent(labelStyle, label);
try {
    document.insertString(document.getLength(), "\n", labelStyle);
} catch (BadLocationException badLocationException) {
    System.err.println("Oops");
}
myjEditorPane.setDocument(document);

Ответы [ 2 ]

1 голос
/ 15 января 2012

Стиль вашего ярлыка может иметь стиль только для одной иконки за раз. Стиль не сохраняется во время добавления стиля к документу.

Если вы хотите использовать разные значки, используйте:

textPane.insertIcon(...);

В этом случае уникальный символ вставляется в документ при выполнении инструкции.

0 голосов
/ 15 января 2012
   try{

        StyledDocument doc = jTextPane1.getStyledDocument();
            Style def =  StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE );
        Style regular = doc.addStyle( "regular", def );
        Icon icon ;
        FileSystemView fsv = FileSystemView.getFileSystemView();
        for(int i=0;i<3;i++ ){
        icon = fsv.getSystemIcon(File.createTempFile("myfile.",".pdf"));
        jTextPane1.insertIcon(icon);
        doc.insertString( doc.getLength(),"pdfBook"+i+"\n", regular );
        }

  }catch(Exception excep){
         System.out.println("Exception");
      }
...