Как сделать JTextPane Do Line Breaks с нулевой шириной?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как сделать JTextPane Do Line Breaks с нулевой шириной?

Сообщение Anonymous »

Я пытаюсь написать очень ограниченный текстовый редактор с Java, чтобы облегчить набор печати для проекта, который использует наш алфавит несколько неортодоксальным способом. Предполагается, что этот редактор фильтровал пользовательские входы с помощью KeyListner, убедившись (среди прочего), что пробелы, напечатанные перед словами, все еще будут отображаться даже после разбивающихся линейных. Но, к сожалению, JTextPane, который я использую для отображения текста, не реагирует на мои пространства с нулевой шириной, вместо этого не делая линейных разбил.import javax.swing.JFrame;
import java.awt.Toolkit;

import javax.swing.JLayeredPane;
import javax.swing.SpringLayout;
import javax.swing.JTextPane;
import javax.swing.JLabel;
import java.awt.Font;
import java.awt.Color;

class MainClass
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setContentPane(new OwlishTypingView("Palatino", 36, 24));
frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

class OwlishTypingView extends JLayeredPane
{
SpringLayout layout = new SpringLayout();
JTextPane textPane = new JTextPane();
JLabel syllableBuilder = new JLabel();

OwlishTypingView(String typeface, int mainSize, int helperSize)
{
setBackground(Color.WHITE);
setOpaque(true);
setLayout(layout);
syllableBuilder.setFont(new Font(typeface, Font.BOLD, helperSize));
syllableBuilder.setForeground(Color.GRAY);
syllableBuilder.setText(" 1 2 3 4 5 6 Helper test ");
add(syllableBuilder);
textPane.setFont(new Font(typeface, Font.PLAIN, mainSize));
textPane.setText("This is a test to see if linebreaks​ work");
textPane.setEditable(false);
add(textPane);
layout.putConstraint(SpringLayout.NORTH, textPane, syllableBuilder.getPreferredSize().height, SpringLayout.NORTH, this);
layout.putConstraint(SpringLayout.WEST, textPane, 0, SpringLayout.WEST, this);
layout.putConstraint(SpringLayout.EAST, textPane, 0, SpringLayout.EAST, this);
layout.putConstraint(SpringLayout.SOUTH, textPane, 0, SpringLayout.SOUTH, this);
}
}
< /code>
(Последнее пространство в тестовом тексту, которое я вкладываю на JTextPane, на самом деле представляет собой пространство с нулевой шириной и неразрывное пространство-дуэт) < /p>
Я на самом деле не пробовал никаких идей о том, как решить эту проблему, потому что почти все предшествующие вопросы и ответы, связанные с ними, не так, как и в противном случае, что они не захотят. До сих пор я нашел один < /em> экземпляр человека, у которого была похожая проблема с моей, но им не нужно было быть гибким, чтобы быть гибким вне их применения (я хочу скопировать мой для использования в другом месте) и, таким образом, мог решить эту проблему, вставив вручную линейки и остановившись в области нулевой ширины. Другой способ? Мне нужно было бы написать или расширить редактирование, чтобы он понимал больше видов пространств, чем просто ванильный вид. Однако я не знаю , как сделать это.
Что мне удалось сделать, это расширить JTextArea, так что он будет ведущим правильное ведение-динамически вставив '\ n'-chars в строку, которую он хранит, чтобы правильно отображать текст, а затем снимая сказанные «\ n'-Chars» снова в форме «)» ()-это то, что я не так, что я не знаю, что я не знаю, что я использую разницу. /> Я все равно был бы заинтересован в понимании того, как сделать Editorkit-Teth, но я думаю, что больше нет срочности. < /p>

Подробнее здесь: https://stackoverflow.com/questions/797 ... dth-spaces
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»