当前位置: 首页 > 知识库问答 >
问题:

更改JButton的禁用前景(字体)颜色为Windows

东方骏
2023-03-14

我意识到这听起来很像已经发布在那里的许多问题,但是请继续阅读;这有一个看似相似的问题,但并没有与已经提供的许多解决方案一起工作。

我目前正在操作系统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);

这些都不管用。我还尝试了以下方法:

  • 将OS X导出到。jar文件,然后在Windows中使用它。Windows字体颜色仍在变化

还有其他我忽略的解决方案吗?

目前,我已经求助于将字体保持为目前难看的灰色,并将背景(出于某种原因,仍然可以通过. setbackground()轻松更改)更改为其他可以容纳它的颜色。

那么,为什么OSX和Windows之间似乎存在这种颜色差异呢?我更喜欢OSX的配色方案,但我真的不想为本质上相同的程序编写两套代码。

我该怎么办?

共有2个答案

孙阳旭
2023-03-14

你的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();
            }
        });
    }
}
暨高洁
2023-03-14

>

  • 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中的边框颜色 。评估部分指出: 更改按钮的外观总是会导致与当前