Сохранение формата при поиске текста - PullRequest
2 голосов
/ 28 января 2012

Я делаю сетевое приложение с функцией чата.В чате у меня есть один JTextPane для отображения сообщений и еще один для ввода.Затем у меня есть несколько кнопок, которые позволяют добавить стиль ввода текста (жирный, курсив, размер шрифта, цвет).Текст корректно форматируется на панели ввода, хотя при перемещении на панель отображения (после нажатия правильного JButton) он имеет формат только последнего символа.Как я могу переместить текст, сохраняя его исходный формат? Например, если я напишу «Hello Worl d » на входе, на дисплее отобразится «Hello Worl d»

textPane - это панель ввода

Где установлено:

final SimpleAttributeSet set = new SimpleAttributeSet();

Код для полужирного ввода текста (аналогично добавлению других стилей):

bold.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                StyledDocument doc = textPane.getStyledDocument();
                if (StyleConstants.isBold(set)) {
                    StyleConstants.setBold(set, false);
                    bold.setSelected(false);
                } else {
                    StyleConstants.setBold(set, true);
                    bold.setSelected(true);
                }
                textPane.setCharacterAttributes(set, true);
            }
        });

код для перемещениятекст из области ввода в область отображения:

getInput.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                String input = textPane.getText();
                textPane.setText("");
                if(!input.endsWith("\n")){
                    input+="\n";
                }
                StyledDocument doc = displayPane.getStyledDocument();
                int offset = displayPane.getCaretPosition();
                try {
                    doc.insertString(offset, input, set);
                } catch (BadLocationException ex) {
                    Logger.getLogger(ChatComponent.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });

1 Ответ

4 голосов
/ 28 января 2012

Используйте пример для объединения обоих документов http://java -sl.com / tip_merge_documents.html

...