2014-03-26 6 views
7

Ich mache ein textbasiertes Spiel, bei dem der Benutzer Text eingibt, um das Spiel zu lösen. Ich entschied mich dafür, Java Swing zu verwenden, um den Text anzuzeigen, und ich möchte den Hintergrund des textPane haben, um schwarz zu sein. Ich habe alles versucht, was ich gefunden habe (kommentiert), aber nichts davon scheint zu funktionieren.JTextPane Hintergrundfarbe

private JTextPane blackJTextPane() { 
    //JTextPane area = new JTextPane(); 
    //area.setBackground(Color.BLACK); 
    //area.setForeground(Color.WHITE); 
    JEditorPane area = new JEditorPane(); 

     Color bgColor = Color.BLACK; 
     UIDefaults defaults = new UIDefaults(); 
     defaults.put("EditorPane[Enabled].backgroundPainter", bgColor); 
     area.putClientProperty("Nimbus.Overrides", defaults); 
     area.putClientProperty("Nimbus.Overrides.InheritDefaults", true); 
     area.setBackground(bgColor); 

    return area; 
    } 
public Everything(){ 
    super("Game"); 
    try { 
     UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 
    } catch (Exception exc) { 

     // ignore error 
    } 
    setSize(600,500); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    BorderLayout layout = new BorderLayout(); 
    setLayout(layout); 
    setVisible(true); 

    text = new JLabel(""); 
    text.setText("Text:"); 

    texts = new JTextField(20); 
    texts.setBackground(Color.white); 
    texts.setText(""); 

    JPanel panel = new JPanel(); 

    panel.add(text); 
    panel.add(texts); 

    texts.addActionListener(this); 
    add(panel, BorderLayout.SOUTH); 


    UIDefaults defs = UIManager.getDefaults(); 
    defs.put("TextPane.background", new ColorUIResource(Color.BLACK)); 
    defs.put("TextPane.inactiveBackground", new ColorUIResource(Color.BLACK)); 


    area = blackJTextPane(); 

    area.setEditable(false); 

    style = area.addStyle("style", null); 
    //StyleConstants.setBackground(style, Color.black); 

    JScrollPane pane = new JScrollPane(area); 
    add(pane, BorderLayout.CENTER); 

    doc = area.getStyledDocument(); 

    button.addActionListener(this); 

    setVisible(true); 







} 

Die Importe sind hier nicht dargestellt, aber es gibt keine Fehler im Spiel, wenn ich es mit jedem dieser Kommentar gesetzt Teile laufen.

Antwort

9

Möglicherweise besteht ein Problem mit Nimbus, das die Hintergrundfarbeinstellungen nicht berücksichtigt. Versuchen Sie dies, um die Farbe zu überschreiben:

JEditorPane area = new JEditorPane(); 

    Color bgColor = Color.BLACK; 
    UIDefaults defaults = new UIDefaults(); 
    defaults.put("EditorPane[Enabled].backgroundPainter", bgColor); 
    area.putClientProperty("Nimbus.Overrides", defaults); 
    area.putClientProperty("Nimbus.Overrides.InheritDefaults", true); 
    area.setBackground(bgColor); 
+0

Wo gebe ich diesen Code ein? –

+0

@Slushy_G setze es in 'blackJTextPane()' anstelle von 'area.setBackground (Color.BLACK);' – tenorsax

+0

Gibt Fehler, ich werde Code aktualisieren, um neue Version –