JTextField中的字体颜色不同

如何在JTextField或两种颜色的jLabel中显示文本。

例如:

1 0 0 0 1 1 1 0 1

textField.setForeground(Color.RED,BLUE);

例如,定位单个RED

JTextField中的字体颜色不同

您无法使用JTextField实现它,而是使用JEdi​​torPane或JTextPane 。

阅读有关如何使用编辑器窗格和文本窗格的更多信息


直接从HERE使用JTextPane示例代码

 import javax.swing.*; import javax.swing.text.*; import java.awt.*; public class StylesExample12 { public static void main(String[] args) { JFrame f = new JFrame("Styles Example 1"); // Create the StyleContext, the document and the pane StyleContext sc = new StyleContext(); final DefaultStyledDocument doc = new DefaultStyledDocument(sc); JTextPane pane = new JTextPane(doc); // Create and add the style final Style heading2Style = sc.addStyle("Heading2", null); heading2Style.addAttribute(StyleConstants.Foreground, Color.red); heading2Style.addAttribute(StyleConstants.FontSize, new Integer(16)); heading2Style.addAttribute(StyleConstants.FontFamily, "serif"); heading2Style.addAttribute(StyleConstants.Bold, new Boolean(true)); try { SwingUtilities.invokeAndWait(new Runnable() { public void run() { try { // Add the text to the document doc.insertString(0, text, null); // Finally, apply the style to the heading doc.setParagraphAttributes(0, 1, heading2Style, false); } catch (BadLocationException e) { } } }); } catch (Exception e) { System.out.println("Exception when constructing document: " + e); System.exit(1); } f.getContentPane().add(new JScrollPane(pane)); f.setSize(400, 300); f.setVisible(true); } public static final String text = "Attributes, Styles and Style Contexts\n" + "The simple PlainDocument class that you saw in the previous " + "chapter is only capable of holding text. The more complex text " + "components use a more sophisticated model that implements the " + "StyledDocument interface. StyledDocument is a sub-interface of " + "Document that contains methods for manipulating attributes that " + "control the way in which the text in the document is displayed. " + "The Swing text package contains a concrete implementation of " + "StyledDocument called DefaultStyledDocument that is used as the " + "default model for JTextPane and is also the base class from which " + "more specific models, such as the HTMLDocument class that handles " + "input in HTML format, can be created. In order to make use of " + "DefaultStyledDocument and JTextPane, you need to understand how " + "Swing represents and uses attributes.\n"; } 

快照:

在此处输入图像描述


编辑

根据您的问题,请尝试以下示例代码:(根据您的要求进行更改)

  // Create and add the style final Style redStyle = sc.addStyle("RED", null); redStyle.addAttribute(StyleConstants.Foreground, Color.red); redStyle.addAttribute(StyleConstants.FontSize, new Integer(16)); final Style blueStyle = sc.addStyle("BLUE", null); blueStyle.addAttribute(StyleConstants.Foreground, Color.blue); blueStyle.addAttribute(StyleConstants.FontSize, new Integer(14)); blueStyle.addAttribute(StyleConstants.Bold, new Boolean(true)); try { SwingUtilities.invokeAndWait(new Runnable() { public void run() { try { String[] text = { "1a", "0b", "0c", "0d", "1e", "1f", "1g", "0h", "1i" }; for (int i = 0; i < text.length; i++) { String s = text[i]; // Finally, apply the style to the heading int start = pane.getText().length(); Style style = null; if (i % 2 == 0) { style = redStyle; } else { style = blueStyle; } // Add the text to the document doc.insertString(start, s + " ", style); } } catch (BadLocationException e) { } } }); } catch (Exception e) { System.out.println("Exception when constructing document: " + e); System.exit(1); } 

快照:

在此处输入图像描述