我意识到这听起来很像已经发布在那里的许多问题,但是请继续阅读;这有一个看似相似的问题,但并没有与已经提供的许多解决方案一起工作。
我目前正在操作系统X和视窗系统上用Eclipse写Java。使用操作系统X,我有一个JButton,从. setEnable(true)到. setEnable(false)。当这种情况发生时,当它被禁用时,我通过. setbackground(某种颜色)改变它的背景颜色。在整个过程中,前景(字体)颜色不会改变,保持黑色。这就是我想要的,它是完美的。
然后是Windows的问题。和上面一样,我有一个从。将已启用(true)设置为。setEnabled(错误)。我还通过改变它的背景。挫折背景(某种颜色)。然而,当这种情况发生时,前景(字体)颜色不会保持不变——
所以问题是:如何更改禁用的JButton的前景色?
我已经尝试过以下方法:
button.setForeground(Color.BLACK);
button.setText(<html><font color = black>BUTTON</font></html>);
UIManager.put("Button.disabledText", Color.BLACK);
UIManager.getDefaults().put("Button.disabledText", Color.BLACK);
UIManager.put("Button.foreground", Color.BLACK);
UIManager.getDefaults().put("Button.foreground", Color.BLACK);
这些都不管用。我还尝试了以下方法:
还有其他我忽略的解决方案吗?
目前,我已经求助于将字体保持为目前难看的灰色,并将背景(出于某种原因,仍然可以通过. setbackground()轻松更改)更改为其他可以容纳它的颜色。
那么,为什么OSX和Windows之间似乎存在这种颜色差异呢?我更喜欢OSX的配色方案,但我真的不想为本质上相同的程序编写两套代码。
我该怎么办?
你的Java版本是什么??因为,在我尝试了你的示例代码后,它不起作用。我用了1.7Java,它不起作用。
试试这个。。。
public class TestEntryPoint {
private JButton btn1 = new JButton("Test");
private JButton button1 = new JButton("Toggle");
public TestEntryPoint() {
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
button1.setEnabled(!button1.isEnabled());
}
});
UIManager.put("Button.disabledText", Color.red);
JFrame f = new JFrame("ButtonTest");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new GridLayout(2, 2));
f.add(button1);
f.add(btn1);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TestEntryPoint();
}
});
}
}
>
AFAIK仅通过使用Html为按钮JComponents和JTabBedPane
或者重写BasicButtonUI(关于本地化MetalLookAnd感觉的代码示例)
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class HtmlAndJButton {
final String buttonText = " Whatever words, <br> but nothing wise";
final String buttonText1 = " Whatever words, <br> but nothing wise, "
+ "<br> plus 1st. line, ";
final String buttonText2 = " Whatever words, <br> but nothing wise, "
+ "<br> plus 1st. line, <br> plus 2nd. line,";
private JButton btn1 = new JButton("Toggle");
private JButton button = new JButton(buttonText);
private JButton button1 = new JButton("Toggle");
private JButton button2 = new JButton("Toggle");
public HtmlAndJButton() {
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
button.setText("<html><font color=" + (button.isEnabled()
? "blue" : "red") + ">" + buttonText + "</font></html>");
button.setEnabled(!button.isEnabled());
button1.setText("<html><font color=" + (button1.isEnabled()
? "red" : "green") + ">" + buttonText1 + "</font></html>");
button1.setEnabled(!button1.isEnabled());
button2.setText("<html><font color=" + (button2.isEnabled()
? "green" : "yellow") + ">" + buttonText2 + "</font></html>");
button2.setEnabled(!button2.isEnabled());
}
});
button.setText("<html><font color=red>" + buttonText + "</font></html>");
button1.setText("<html><font color=green>" + buttonText1 + "</font></html>");
button2.setText("<html><font color=yellow>" + buttonText2 + "</font></html>");
JFrame f = new JFrame("ButtonTest");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new GridLayout(2, 2));
f.add(button);
f.add(button1);
f.add(button2);
f.add(btn1);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
HtmlAndJButton t = new HtmlAndJButton();
}
});
}
}
问题内容: 我需要更改CSS中禁用的输入元素的样式。 我该如何针对Internet Explorer? 问题答案: 您不能使用Internet Explorer。 -您可以将输入设置为,但这会带来其他后果(例如使用,将被发送到服务器提交,但使用,则不会)
问题内容: 我希望能够根据当前路径更改背景色。 我尝试通过每当路径更改时检查$ location.path()来执行此操作,然后使用伪指令更改背景色,但这似乎很简单(并且不起作用)。 什么是实现这一目标的更分离的方法? 如果有人想看,这是我写的代码。 问题答案: 为了消除样式,数据,内容等方面的动态变化,通常很实际的做法是创建另一个包含接口(自定义提供程序)的角度模块,该接口可让您在配置级别之前和
问题内容: 我注意到您可以更改文本框中文本的颜色,该文本框在Firefox中应用了简单的类却被禁用,但是无法在IE 6/7中做到这一点。有没有人有一个优雅的解决方案来实现这一目标。 问题答案: 我注意到您可以在Firefox中禁用的文本框中更改文本的颜色 我想这个问题想说的是: IE中显示灰色文本,而Fox中显示红色。FWIW,Opera也给出灰色,而WebKit浏览器给出红色。 这是一个纯粹的C
我正在运行Bootstrap gem的4.4.1版本。我的Rails应用程序中有一个Bootstrap 4 navbar。这是我的一些条形码。 残疾人班很管用。你不能点击他们在所有这是我想要的。我希望那些链接是灰色的。 下面是CSS代码。最后一行是我改变字体颜色的尝试。 我也试过以下方法,但没有一个奏效。 我找到的所有信息都与引导3有关,在引导3中,您必须在CSS样式表中编写。.Disabled类
问题内容: 我正在编写一个简单的扫雷游戏,现在可以运行,但是我正在处理一些漂亮的细节,例如使每个数字使用不同的颜色。 尝试在上设置文本颜色时,我总是遇到错误。我可以很容易地更改文本和背景,但是不能专门更改文本颜色。 导致一切混乱的部分是: 由于某种原因,我的错误是: 每当我尝试编译时都会发生这种情况,但是当我将其更改为说而不是正常工作时,就会发生这种情况。 问题答案: 对于JButton未定义。要
问题内容: 我有一个Swing JButton,我的项目也使用了以下代码: 现在,当尝试使用一个按钮更改背景时,它不会变成红色,只有边框变成红色。 在仍用于其余组件/项目时,如何将背景变为红色? 问题答案: 看一下错误4880747:XP L&F:REGRESSION:JButton上的setBackground设置Windows XP中的边框颜色 。评估部分指出: 更改按钮的外观总是会导致与当前