У меня проблема с JLabel
и простой текстовой оболочкой. Для простой текстовой упаковки я использую LabelView
, и я не очень доволен результатом, который он дает мне.JLabel обертывание обычного текста как JTextArea
Моей целью является получение простой текстовой упаковки, например, JTextArea
. Я пробовал WrappedPlainView
, но он работает только с JTextComponent
Так что мой вопрос может быть, вы, ребята, знаете или имеете некоторые предварительные JLabel
просмотров?
примечание: я не хочу добавлять html в свой обычный текст.
LabelView: http://docs.oracle.com/javase/6/docs/api/javax/swing/text/LabelView.html
WrappedPlainView: http://docs.oracle.com/javase/6/docs/api/javax/swing/text/WrappedPlainView.html
Попробуйте этот пример и посмотрим, как слова врапит изменен размер рамки:
import javax.swing.*;
import java.awt.*;
public class Example extends JFrame {
private static final String LONG_TEXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " +
"Ut in enim velit. Nunc posuere purus ac odio dictum auctor. " +
"Vivamus nec sem mi. Curabitur sed iaculis nibh. Proin vel massa augue. " +
"Aenean laoreet, tellus ut vulputate mollis, justo eros ornare tortor, " +
"vitae venenatis turpis augue id purus. In quis pretium justo. " +
"Quisque interdum sem at augue ultrices molestie. " +
"Nulla consectetur magna nec est malesuada sed ultricies diam gravida. " +
"Curabitur luctus, nulla nec pulvinar fringilla, enim turpis luctus tellus, " +
"non auctor diam ligula quis lectus.";
public Example()
{
JTextArea textArea = new JTextArea(LONG_TEXT);
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.setOpaque(false);
textArea.setEditable(false);
add(new JScrollPane(textArea), BorderLayout.CENTER);
setMinimumSize(new Dimension(100, 100));
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
}
public static void main(String []args)
{
new Example();
}
}
Посмотрите на этот пример, и вы увидите, проблема с словами обертывания JLabel:
import javax.swing.*;
import java.awt.*;
public class Example extends JFrame {
private static final String LONG_TEXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " +
"Ut in enim velit. Nunc posuere purus ac odio dictum auctor. " +
"Vivamus nec sem mi. Curabitur sed iaculis nibh. Proin vel massa augue. " +
"Aenean laoreet, tellus ut vulputate mollis, justo eros ornare tortor, " +
"vitae venenatis turpis augue id purus. In quis pretium justo. " +
"Quisque interdum sem at augue ultrices molestie. " +
"Nulla consectetur magna nec est malesuada sed ultricies diam gravida. " +
"Curabitur luctus, nulla nec pulvinar fringilla, enim turpis luctus tellus, " +
"non auctor diam ligula quis lectus.";
public Example()
{
JLabel label = new JLabel(LONG_TEXT);
add(label, BorderLayout.CENTER);
setMinimumSize(new Dimension(100, 100));
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
}
public static void main(String []args)
{
new Example();
}
}
Итак, цель состоит в том, чтобы получить слова JLabel, как в JTextArea.
ПРИМЕЧАНИЕ: в реальном проекте я работаю с javax.swing.text.View`s, и я использую LabelView для простого текста.
Для более эффективной помощи следует отправить сообщение [SSCCE] (http://sscce.org/). ;) –
@Mode Уже после вашего редактирования вопроса вам нелегко дать вам совет. Пожалуйста, рассмотрите комментарий Андрея и подготовьте SSCCE. Также покажите и опишите, что вам не нравится в «LabelView», и что вы хотите достичь. – Howard
@Mode посмотри мой обзор вертолета в моей первой попытке повторной попытки – mKorbel