Я создаю текстовый редактор с использованием JTextPane, который позволяет пользователю изменять цвет выделенного текста. Но когда пользователь выбирает текст, затем выбирает вариант изменения цвета (например, красного), текст не отображается как красный, пока текст не будет выбран. Я попытался использовать setSelectedTextColor для изменения цвета выделенного текста, но это не сработало, так как после этого текст изменяется на красный, когда текст выбран. Есть ли способ, чтобы выбранный текст отображался как фактический цвет? Или как способ работы в Word, где это не фактический цвет текста, но при выборе текста разных цветов они отображаются как разные цвета, даже если они выбраны.Изменение цвета выделенного текста в jTextPane
Я использую следующий код для настройки JTextPane и кнопки, которая изменяет выделенный текст в красный цвет:
JButton redButton = new JButton(new StyledEditorKit.ForegroundAction("red", Color.RED));
redButton.setFocusable(false);
buttonPanel.add(redButton);
JTextPane настроенный, как с типом HTML контента и использует HTMLEditorKit:
p=new JTextPane();
p.setSize(300, 300);
kit = new HTMLEditorKit();
p.setEditorKit(kit);
p.setDocument(kit.createDefaultDocument());
p.setContentType("text/html");
p.setEditable(true);
Дайте мне знать, если вам нужно больше исходного кода, чтобы понять вопрос. Спасибо!
Я могу воссоздать свой предыдущий пример, используя setSelectedText (цвет). Но мой вопрос в том, поддерживает ли Java переменные цвета текста или поддерживает только один. Поэтому, если я выбрал 2 слова, один черный текст и один красный текст, и я установил выделенный цвет текста на красный (setSelectedTextColor (Color.RED)), то оба слова будут отображаться красным, если выделено, но я хотел бы получить черное слово по-прежнему отображается как черный, даже если подсвечивается. – smith8ar
Я не уверен, чего вы пытаетесь достичь; действия «EditorKit» предназначены для работы над выбором, сохраняя при этом четкость. – trashgod
Моя проблема с выполнением действий над выбранным текстом, а скорее с тем, как текст отображается, когда он подсвечен. В вашем примере выделенный текст отображается красным. Но скажем в оригинале, невыбранный текст «Стек» красный, а «OverFlow» - черный. Когда выделено, оно все равно будет отображаться как все красное, как на скриншоте. Поэтому мне интересно, есть ли способ, чтобы часть слова «OverFlow» по-прежнему отображалась как черная, когда выделено, и «Stack» по-прежнему остается красным. – smith8ar