2010-06-15 3 views
1

J'ai actuellement un JTextPane qui affichera le texte provenant de différents flux. La façon dont l'utilisateur peut dire d'où provient le texte est que le texte de chaque flux a un style différent. Y a-t-il un moyen de créer un style qui cachera le texte afin que je puisse filtrer différents morceaux de texte?Est-il possible de masquer du texte dans un style?

Merci.

Répondre

2

Vous pouvez (sorte de) faux en utilisant un 0 taille de la police et correspondant à l'arrière-plan du composant:

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); 
} 

La longueur de la chaîne invisible ci-dessus ne semble même pas avoir une incidence sur l'espace entre les composants visibles. Mais rassurez-vous, il est toujours là, comme le prouvera la copie de la vitre.

+0

Merci, c'est ce que je cherchais. – Sandro

Questions connexes