Исправление размера JEditorPane внутри JPanel - PullRequest
2 голосов
/ 27 октября 2011

Это очень похоже на мой последний вопрос, но я делаю это в JPanel. Я пытаюсь отобразить JEditorPane внутри JPanel (фиксированный размер), который затем отображает строку текста HTML. (Это так, чтобы я мог использовать раскладку карт и переключать панели с разными дисплеями). Я могу снова отобразить все, хотя кажется, что текст внутри строки HTML, который я передаю в панель редактирования, не обрезается и не переносится на новую строку. то есть он просто выходит за пределы экрана. Кажется, что метод setSize не имеет никакого отношения к размеру Панели?

Я делаю это приложение для экрана другого размера, поэтому важно, чтобы текст переносился на новые строки и соответствовал размеру экрана, а не убегал! Он работает, когда панель редактора находится непосредственно внутри JFrame, но не в JPanel.

    JEditorPane pane = new JEditorPane();
    pane.setEditable(false);
    HTMLDocument htmlDoc = new HTMLDocument () ; 
    HTMLEditorKit editorKit = new HTMLEditorKit () ;
    pane.setEditorKit (editorKit) ; 
    pane.setSize(size);
    pane.setMinimumSize(size); 
    pane.setMaximumSize(size);
    pane.setOpaque(true);
    pane.setText("<b><font face=\"Arial\" size=\"50\" align=\"center\" > Unfortunately when I display this string it is too long and doesn't wrap to new line!</font></b>");
    bg.add(pane, BorderLayout.CENTER);

Большое спасибо Сэм

Ответы [ 2 ]

6 голосов
/ 27 октября 2011
..."Unfortunately when I display this string it is too long and doesn't wrap to new line!"

Установите ширину с помощью стиля в элементе body, как в в этом примере .

image

3 голосов
/ 27 октября 2011

Ну, вы никогда не должны использовать методы setXXXSize из вашего приложения. Смотрите эту тему .

Всего несколько соображений:

  1. Это зависит от расположения LayoutManager и установки правильного размера компонента, поэтому не следует указывать его явно
  2. Не все LayoutManager заботятся о значениях предпочитаемого размера компонентов.
  3. Даже если LayoutManager позаботится о предпочтительном размере, неправильно использовать эти методы явно
  4. Если вы хотите явно использовать размер, делайте это только с родительским фреймом, содержащим все компоненты.
  5. Если LayoutManager неправильно размещает компоненты, используйте другой LayoutManager или реализуйте свой собственный.

Примечание:

Я знаю, что в некоторых ситуациях использование setXXXmethods, кажется, работает нормально. Я делал это довольно долго, прежде чем понял, насколько это неправильно. Старайтесь избегать этого, иначе у вас будет много кода для рефакторинга.

...