2014-02-18 2 views
0

У меня есть JPanel (и я тоже пробовал JTextArea), что хотел бы иметь на нем текст. Текст должен бытьJava Swing GUI: обтекание текста, центральный текст и пользовательский шрифт?

  1. Centered
  2. Have слово обернуть
  3. Использование пользовательских шрифтов из файла .ttf, что я в настоящее время используется именно не установлена ​​на компьютере. Я уже решил эту проблему, и шрифт работает нормально. Тем не менее, он не работает, когда помещается в теги, как я видел в качестве возможного решения для моей проблемы.

Как правило, я могу получить два из этих правил, но не могу заставить всех трех работать сразу. Я пробовал html-теги, JLabels, JTextAreas, но никто не удовлетворяет всем условиям. Какие-либо предложения?

static JTextArea quesLbl; 
quesLbl = new JTextArea(""); 
quesLbl.setWrapStyleWord(true); 
quesLbl.setLineWrap(true); 
quesLbl.setEditable(false); 
quesLbl.setFont(qFont); 
quesLbl.setOpaque(true); 
quesLbl.setForeground(Color.WHITE); 
quesLbl.setBackground(Color.BLUE); 

Этот код приводит к тому, что текст является завернутым словом, а шрифт работает, но не центрируется.

+2

Используйте JTextArea или JEditorPane и отправьте код, который вы пытаетесь запустить, в форме [MCVE] (http://stackoverflow.com/help/mcve). –

+0

Что вы уже пробовали? люди не помогут вам, если вы не покажете свой код/​​работу. –

+0

Нужно ли вам центрироваться по горизонтали или по вертикали? –

ответ

2

Предполагая, что вы имеете в виду горизонтально центрированный, я бы предложил использовать JTextPane. Я не тестировал, но я надеюсь, что установка шрифта будет работать так же хорошо. Для центрирования см Centering Text in a JTextArea or JTextPane - Horizontal Text Alignment, я цитирую ответ там сейчас:

public JTextPane createTextPane(String text){ 
    JTextPane textPane = new JTextPane(); 
    tp.setText(text); 
    StyledDocument doc = textPane.getStyledDocument(); 
    SimpleAttributeSet center = new SimpleAttributeSet(); 
    StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER); 
    doc.setParagraphAttributes(0, doc.getLength(), center, false);+ 
} 

IIRC слово упаковка должна прийти бесплатно. Надеюсь, это поможет, если нет, проясните вопрос, пожалуйста.

+0

Я немного не уверен, как их использовать. Не могли бы вы привести еще один пример использования JTextPane? – nicocolton

+0

@nicocolton добавил несколько строк. Теперь код создает текстовую панель и устанавливает текст. Он также должен быть сосредоточен. Код не проверен, поэтому никаких гарантий ;-) Если вы хотите установить шрифт, посмотрите здесь http://javatechniques.com/blog/setting-jtextpane-font-and-color/ –

+0

Получил его на работу, перенос слов и центрирование работает, но пользовательский шрифт не отображается (хотя размер шрифта правильный). Как я уже сказал, этот шрифт не установлен на компьютере, но в JLabels он работает иначе. – nicocolton

0

Это сделал работу по центру и слова-обертывание часть для меня:

JLabel label = new JLabel(); 
label.setText("<html><body style='text-align:center'> This is some very long sentance with many letters and not so much meaning.</body></html>"); 
label.setHorizontalAlignment(JLabel.CENTER); 
label.setVerticalAlignment(JLabel.CENTER); 

выше решение также работает, но мне нужно, чтобы метка на верхней части другого компонента шахты (который Безразлично» t работать с JTextPane).

Смежные вопросы