Можно ли скрыть текст через стиль? - PullRequest
1 голос
/ 15 июня 2010

В настоящее время у меня есть JTextPane, который будет отображать текст, поступающий из разных потоков.Пользователь может определить, из какого потока поступил текст, - это то, что у текста из каждого потока свой стиль.Есть ли способ создать стиль, который будет скрывать текст, чтобы я мог отфильтровать различные фрагменты текста?

Спасибо.

1 Ответ

2 голосов
/ 15 июня 2010

Вы можете (вроде) подделать его, используя размер шрифта 0 и соответствующий фон компонента:

public static void main(String[] args) throws Exception {
    JTextPane pane = new JTextPane();

    Style regular = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);
    Style invisible = pane.getStyledDocument().addStyle("invisible", regular);
    StyleConstants.setFontSize(invisible, 0);
    StyleConstants.setForeground(invisible, pane.getBackground());
    pane.getStyledDocument().insertString(pane.getStyledDocument().getLength(), 
            "Hello, ", null);
    pane.getStyledDocument().insertString(pane.getStyledDocument().getLength(), 
            "cruel ", pane.getStyledDocument().getStyle("invisible"));
    pane.getStyledDocument().insertString(pane.getStyledDocument().getLength(), 
            "world!", null);
    pane.setPreferredSize(new Dimension(500, 500));

    JFrame frame = new JFrame();
    frame.setLayout(new BorderLayout());
    frame.add(pane, BorderLayout.CENTER);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack(); frame.setVisible(true);
}

Длина невидимой строки выше, похоже, даже не влияет на пространство между видимыми компонентами. Но будьте уверены, это все еще там, поскольку копирование с панели докажет.

...