【问题标题】:Nimbus L&F trying to change background color of JFormattedTextField with UIManagerNimbus L&F 尝试使用 UIManager 更改 JFormattedTextField 的背景颜色
【发布时间】:2014-04-02 03:11:49
【问题描述】:

SSCCE

import java.awt.EventQueue;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.WindowConstants;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.plaf.ColorUIResource;
import javax.swing.text.Document;
import javax.swing.text.NumberFormatter;

public class Test extends JFrame{

    private JFormattedTextField input, input2;
    private NumberFormatter formatter;


    public Test() {
        formatter = new NumberFormatter(NumberFormat.getNumberInstance());
        input = new JFormattedTextField(formatter);
        input2 = new JFormattedTextField(formatter);


        input.setColumns(4);
        input2.setColumns(4);
        input.setValue(0.0);
        JPanel panel = new JPanel();
        panel.add(input);
        panel.add(input2);

        add(panel);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        try {
            for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    UIManager.setLookAndFeel(info.getClassName());
                    UIManager.put("nimbusBase", new ColorUIResource(0, 0, 0));
                    UIManager.put("FormattedTextField.background", Color.RED);
                    UIManager.put("control", new ColorUIResource(153, 76, 0));
                    UIManager.put("textForeground", new ColorUIResource(255, 153, 51));
                    break;
                } }
        } 
        catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        }

        EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Test();
            }
        });

    }
}

问题

简单地说,我正在尝试将 Enabled JFormattedTextField 的背景颜色从默认的白色更改为我的 RGB 颜色。我使用找到的表here(此blog 中的链接)找到合适的名称。

我意识到博客有点过时了(6 年),Nimbus 从那时起已经更新了很多,所以这可能是我的问题。

如何使用UIManager 更改JFormattedTextField 的背景颜色?

更正的代码

我更新了上面的代码,它现在应该可以工作了。问题在于使用ColorUIResource 而不仅仅是Color

【问题讨论】:

  • 您检查了this 链接吗? FormattedTextField.background

标签: java swing look-and-feel nimbus uimanager


【解决方案1】:

如何使用 UIManager 更改背景颜色 JFormattedTextField?

您必须设置此属性FormattedTextField.background,如在此处找到Nimbus Defaults

类似的东西

 UIManager.put("FormattedTextField.background", Color.RED);

【讨论】:

  • 我很愚蠢,我没有将它包含在 SSCCE 中。再次更新我的代码。但又短又甜,行不通。编辑从头开始, UIResource 显然不是设置它的方法。
  • @Eric 实际上,如果您阅读我提供的链接,如果您设置FormattedTextField[Enabled].backgroundPainter 或您想要的属性Painter
猜你喜欢
  • 2012-08-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 2012-12-18
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多