JTextPane не переносит текст

Я столкнулся с одной странной проблемой. У меня есть JtextPane внутри JscrollPane, который показывает большую строку с точки зрения списка рассылки, и он правильно оборачивает код, когда я запускаю программу с помощью eclipse, но когда я запускаю ту же программу с использованием java webstart, он перестал оборачивать текст.

Вот мой код:

   private JScrollPane displayResults(String distributionList) {
// TODO Auto-generated method stub
  JTextPane textArea = new JTextPane();
  textArea.setText(distributionList);
  textArea.setEditable(false);
  JScrollPane scrollPane = new JScrollPane(textArea);  
  scrollPane.setPreferredSize( new Dimension( 500, 500 ) );
  return scrollPane;
}

person Ashish    schedule 08.01.2013    source источник


Ответы (2)


Причиной может быть версия java.

См. https://forums.oracle.com/forums/thread.jspa?messageID=10690405, где это обсуждается и предоставляется обходной путь

person StanislavL    schedule 08.01.2013
comment
хорошо, я попробовал упомянутое решение, но столкнулся с одним исключением. Исключение в потоке Thread-40 java.lang.ClassCastException: javax.swing.text.DefaultStyledDocument несовместим с javax.swing.text.html.HTMLDocument - person Ashish; 08.01.2013
comment
это не/не может быть действительным для всех версий Java7, @StanislavL, не могли бы вы также ответить на этот вопрос, и, пожалуйста, с вашим обходным решением кода - person mKorbel; 08.01.2013
comment
@mKorbel Я постараюсь разобраться, но не уверен, когда у меня будет достаточно времени - person StanislavL; 08.01.2013
comment
@StanislavL, плохо, я скучаю по чтению JTextPane вместо JTextArea - person mKorbel; 09.01.2013

ну для меня эта работа

      textArea.setEditorKit(new HTMLEditorKit(){ 
     @Override 
     public ViewFactory getViewFactory(){ 

         return new HTMLFactory(){ 
             public View create(Element e){ 
                View v = super.create(e); 
                if(v instanceof InlineView){ 
                    return new InlineView(e){ 
                        public int getBreakWeight(int axis, float pos, float len) { 
                            return GoodBreakWeight; 
                        } 
                        public View breakView(int axis, int p0, float pos, float len) { 
                            if(axis == View.X_AXIS) { 
                                checkPainter(); 
                                int p1 = getGlyphPainter().getBoundedPosition(this, p0, pos, len); 
                                if(p0 == getStartOffset() && p1 == getEndOffset()) { 
                                    return this; 
                                } 
                                return createFragment(p0, p1); 
                            } 
                            return this; 
                          } 
                      }; 
                } 
                else if (v instanceof ParagraphView) { 
                    return new ParagraphView(e) { 
                        protected javax.swing.SizeRequirements calculateMinorAxisRequirements(int axis, javax.swing.SizeRequirements r) { 
                            if (r == null) { 
                                  r = new javax.swing.SizeRequirements(); 
                            } 
                            float pref = layoutPool.getPreferredSpan(axis); 
                            float min = layoutPool.getMinimumSpan(axis); 
                            // Don't include insets, Box.getXXXSpan will include them. 
                              r.minimum = (int)min; 
                              r.preferred = Math.max(r.minimum, (int) pref); 
                              r.maximum = Integer.MAX_VALUE; 
                              r.alignment = 0.5f; 
                            return r; 
                          } 

                      }; 
                  } 
                return v; 
              } 
          }; 
      } 
  }); 
person Ashish    schedule 08.01.2013