2010-06-15 52 views
1

我目前有一个JTextPane,它将显示来自不同流的文本。用户可以分辨文本来自哪个流的方式是每个流的文本都具有不同的Style。有没有办法让一个Style隐藏文本,以便我可以过滤出不同的文本片段?是否可以通过样式隐藏文本?

谢谢。

回答

2

可以(种)假它通过使用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); 
} 

无形字符串的长度以上甚至不似乎有一个影响上可见组件之间的空间。但请放心,它仍然存在,因为从窗格复制将证明。

+0

谢谢,那就是我一直在寻找的。 – Sandro 2010-06-15 17:09:26

相关问题