Java在禁用的SWT文本字段中设置文本颜色

Java在禁用的SWT文本字段中设置文本颜色,java,text,colors,swt,Java,Text,Colors,Swt,我正在使用一个禁用的SWT文本字段(import org.eclipse.SWT.widgets.text),我基本上想要设置文本颜色 我知道在JTextField中,您可以使用setDisabledTextColor(Color c)设置禁用文本的颜色,但是swt小部件文本字段有什么功能吗 非常感谢任何帮助/建议 禁用组件的颜色是由操作系统调节的内容之一,因此不可能在SWT中更改该颜色 但是,您可以将侦听器添加到SWT中。绘制并自己绘制一些内容 您可以将此作为起点: public stati

我正在使用一个禁用的SWT文本字段(
import org.eclipse.SWT.widgets.text
),我基本上想要设置文本颜色

我知道在
JTextField
中,您可以使用
setDisabledTextColor(Color c)
设置禁用文本的颜色,但是swt小部件文本字段有什么功能吗


非常感谢任何帮助/建议

禁用组件的颜色是由操作系统调节的内容之一,因此不可能在SWT中更改该颜色

但是,您可以将
侦听器添加到
SWT中。绘制
并自己绘制一些内容


您可以将此作为起点:

public static void main(String[] args)
{
    final Display display = new Display();

    Shell shell = new Shell(display);
    shell.setText("StackOverflow");
    shell.setLayout(new FillLayout(SWT.VERTICAL));

    final Text normal = new Text(shell, SWT.BORDER);
    final Text special = new Text(shell, SWT.BORDER);
    special.addListener(SWT.KeyUp, new Listener()
    {
        @Override
        public void handleEvent(Event e)
        {
            normal.setText(special.getText());
            special.redraw();
        }
    });

    special.addListener(SWT.Paint, new Listener()
    {
        @Override
        public void handleEvent(Event e)
        {
            if (!special.isEnabled())
            {
                GC gc = e.gc;

                String text = special.getText();
                Rectangle bounds = special.getBounds();

                gc.setBackground(display.getSystemColor(SWT.COLOR_TITLE_INACTIVE_BACKGROUND));
                gc.setForeground(display.getSystemColor(SWT.COLOR_TITLE_FOREGROUND));
                gc.fillRectangle(0, 0, bounds.width, bounds.height);
                gc.drawText(text, 3, 2);
            }
        }
    });

    normal.setEnabled(false);

    Button switchButton = new Button(shell, SWT.PUSH);
    switchButton.setText("(De)activate");
    switchButton.addListener(SWT.Selection, new Listener()
    {
        @Override
        public void handleEvent(Event e)
        {
            special.setEnabled(!special.getEnabled());
        }
    });

    shell.pack();
    shell.open();
    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
            display.sleep();
    }
}
如下所示(第一个
Text
是默认值,第二个
Text
是自定义值:


谢谢你的帮助。我会在早上第一件事就开始。如果你能提供伪代码/示例代码,那将是一个巨大的好处&我会接受你的回答!