我有一個JTextPane
有pane.setEditable(false)
這迫使它有一個'灰色'的背景顏色。如何更改Java中不可編輯的JTextPane的背景顏色?
嘗試setBackground(Color.WHITE)
(這不起作用)後,我試着環顧網絡尋找答案,但沒有設法找到一個。
任何人都可以幫助我在這一個嗎?
我有一個JTextPane
有pane.setEditable(false)
這迫使它有一個'灰色'的背景顏色。如何更改Java中不可編輯的JTextPane的背景顏色?
嘗試setBackground(Color.WHITE)
(這不起作用)後,我試着環顧網絡尋找答案,但沒有設法找到一個。
任何人都可以幫助我在這一個嗎?
我發現它是什麼 - 這是因爲我有pane.setOpaque(false)
,我不能改變背景顏色沒有先刪除或改變它爲真。
setBackground(Color.white)
改變了這個之後工作。
背景顏色不同於表示組件殘疾的顏色,我以爲這是你最初想要的。 – SomeDude
我相信'setEnabled'和'setEditable'是兩回事。我在詢問'setEditable'。如果我需要用'setEnabled(false)'修改組件的顏色,我會記住你的答案。謝謝 – blueprintChris
好吧。沒有看到你使用setEditable。 – SomeDude
其實試試這個:
UIManager.put("TextPane.disabledBackground", Color.WHITE);
我覺得應該是TextPane.disabledBackground
,如果不嘗試:TextPane.inactiveBackground
更改文本回地面的顏色我相信:在窗格 嘗試setDisabledTextColor。
感謝您的輸入 - 但問題是,我是'pane.setOpqaue(false)'阻止我改變任何顏色。 – blueprintChris
注意,對於一些外觀和感覺像雨雲不尊重的背景屬性,你可以使用此代碼:
private static class Painter extends javax.swing.plaf.nimbus.AbstractRegionPainter {
private final Color color;
private Painter(Color color) {
this.color = color;
}
@Override
protected AbstractRegionPainter.PaintContext getPaintContext() {
return new AbstractRegionPainter.PaintContext(null, null, false);
}
@Override
protected void doPaint(Graphics2D g, JComponent c,
int width, int height, Object[] extendedCacheKeys) {
g.setColor(c.isEnabled() ? c.getBackground() : color);
g.fillRect(0, 0, width, height);
}
}
定義一個新的自定義畫家爲背景。對於雨雲,它適用於您的JTextPane jtp
這樣:
UIDefaults defaults = UIManager.getLookAndFeelDefaults();
Painter painter = new Painter(color);
String key = "TextPane[Disabled].backgroundPainter";
defaults.put(key, painter);
jtp.putClientProperty("Nimbus.Overrides", defaults);
jtp.putClientProperty("Nimbus.Overrides.InheritDefaults", false);
能否請您發表[Runnable的示例](http://stackoverflow.com/help/mcve),我們可以複製粘貼,看到了同樣的像你一樣問題? – Frakcool
我建議檢查[this](https://community.oracle.com/thread/1480217?start=0&tstart=0)鏈接。希望它會回答你的問題 – Jonah
@Frakcool謝謝,我開始編寫一個可運行示例,並找到了解決此問題的答案。我有'pane.setOpaque(false)'這阻止了我更改窗格上的任何顏色。謝謝您的幫助。對不起,我還在學Java! – blueprintChris