如何在Java中更改不可编辑的JTextPane的背景色?
我有一个JTextPane,它的haspane.setEditablefalse强制它有一个“灰显”的背景色 在尝试了setBackgroundColor.WHITE这个不起作用的方法后,我试着在网上寻找答案,但还没有找到答案 有人能帮我做这个吗?试试这个:如何在Java中更改不可编辑的JTextPane的背景色?,java,swing,background,jtextpane,Java,Swing,Background,Jtextpane,我有一个JTextPane,它的haspane.setEditablefalse强制它有一个“灰显”的背景色 在尝试了setBackgroundColor.WHITE这个不起作用的方法后,我试着在网上寻找答案,但还没有找到答案 有人能帮我做这个吗?试试这个: UIManager.put("TextPane.disabledBackground", Color.WHITE); 我认为应该是TextPane.disabledBackground,如果不是,请尝试:TextPane.inactive
UIManager.put("TextPane.disabledBackground", Color.WHITE);
我认为应该是TextPane.disabledBackground,如果不是,请尝试:TextPane.inactiveBackground
要更改文字背景颜色,我相信:
在窗格上尝试。实际尝试一下这个:
UIManager.put("TextPane.disabledBackground", Color.WHITE);
我认为应该是TextPane.disabledBackground,如果不是,请尝试:TextPane.inactiveBackground
要更改文字背景颜色,我相信:
试试窗格。我发现了它是什么-这是因为我有pane.setOpaquefalse,我无法更改背景色,除非先删除它或将其更改为true
setBackgroundColor.white在修改后工作。我发现了它是什么-这是因为我有pane.setOpaquefalse,如果不先删除它或将其更改为true,我无法更改背景色
setBackgroundColor.white在修改后工作。请注意,对于一些不尊重背景属性的外观和感觉像Nimbus的情况,可以使用以下代码:
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);
}
}
这将为背景定义一个新的自定义画师。对于Nimbus,通过以下方式将其应用于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);
请注意,对于一些不尊重背景属性的外观和感觉类似于Nimbus的情况,可以使用以下代码:
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);
}
}
这将为背景定义一个新的自定义画师。对于Nimbus,通过以下方式将其应用于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);
你可以发布一个我们可以复制粘贴并看到与你相同的问题吗?我建议查看链接。希望它能回答你的问题question@Frakcool谢谢,我开始编写一个可运行的示例,并在其中找到了问题的答案。我有pane.setOpaquefalse,这阻止了我更改窗格上的任何颜色。谢谢你的帮助。对不起,我还在学习很多关于Java的知识@ChrisMoran这就是为什么,在这里提问之前,你应该准备你的MCVE或Runnable示例,大多数时候你在这样做的时候找到了解决方案:@Frakcool yeah sure,注意到。谢谢你的帮助。我有时会有点匆忙和不耐烦。你能不能请你发一个帖子,我们可以复制粘贴并看到与你相同的问题?我建议查看链接。希望它能回答你的问题question@Frakcool谢谢,我开始编写一个可运行的示例,并在其中找到了问题的答案。我有pane.setOpaquefalse,这阻止了我更改窗格上的任何颜色。谢谢你的帮助。对不起,我还在学习很多关于Java的知识@ChrisMoran这就是为什么,在这里提问之前,你应该准备你的MCVE或Runnable示例,大多数时候你在这样做的时候找到了解决方案:@Frakcool yeah sure,注意到。谢谢你的帮助。我有时会有点匆忙和不耐烦。谢谢你的输入-但是问题是我有was窗格。setOpqauefalse阻止我更改任何颜色。谢谢你的输入-但是问题是我有was窗格。setOpqauefalse阻止我更改任何颜色。背景颜色与要更改的颜色不同表示组件不可用,我认为这是您最初想要的。我相信setEnabled和setEditable是两个不同的东西。我在打听塞特的情况。如果我需要使用setEnabledfalse更改组件的颜色,我会记住您的答案。谢谢你。没有看到您使用了setEditable。背景颜色与表示组件禁用的颜色不同,我认为这是您最初想要的。我相信setEnabled和setEditable是两个不同的东西。我在打听塞特的情况。如果我需要使用setEnabledfalse更改组件的颜色,我会记住您的答案。谢谢你。没有看到您使用了setEditable。