4

すでにネット全体を検索し、いくつかのことを試して、 のデフォルトの背景色を設定しようとしましたJTextPaneが、それでもデフォルトの白色が表示されます。

コンソール出力をシミュレートしようとしていますが、テキストがなくても背景全体を黒くする必要があります。

挿入されたテキストのみを処理するようsetCharacterAttributes()に見えますが、残りの背景はまだデフォルトの白です。setParagraphAttributes()

背景色の設定に関連するおそらくバグについて何かを見ました。

どうすればいいですか?

HTML ではなくプレーンテキストです。

ありがとう!

アップデート:

私はついにうまくいくものを見つけました。

setBackground(Color.BLACK) を使用すると、挿入されたテキストの下にのみ背景が設定されますが、私の Windows マシンでは、JTextPane の残りの背景はデフォルトの白のままでした。

UIDefault の変更を検討し始めました。これが私が使用したものです:

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

そして、テキストなしで開始すると、JTextPane 全体が希望どおりに黒くなり、挿入されたテキストは必要な方法で表示されます。

私が試した他のすべてのことは、JTextPane の残りの部分を白のままにして、さまざまな「解決策」を試しました。

返信ありがとうございます。

4

2 に答える 2

4

このSSCCEを試してみてください。JTextPane で背景色を設定する方法を示します。

import java.awt.Component;
import java.awt.Container;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

/**
 * http://stackoverflow.com/questions/19435181/how-to-set-default-background-color-for-jtextpane
 */
public class Q19435181 {
  public static void main(String... args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        JFrame frame = new JFrame("Example setting background color on JTextPane");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Container pane = frame.getContentPane();
        pane.add(blackJTextPane());
        frame.setSize(800, 600);
        frame.setVisible(true);
      }

      private Component blackJTextPane() {
        JTextPane pane = new JTextPane();
        pane.setBackground(Color.BLACK);
        pane.setForeground(Color.WHITE);
        pane.setText("Here is example text");
        return pane;
      }
    });
  }
}
于 2013-10-17T19:26:34.460 に答える