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

时间:2014-02-20 16:05:41

标签: java text colors swt

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

我知道在JTextField您可以使用setDisabledTextColor(Color c)来设置禁用文字的颜色,但是有什么内容可以提交swt小部件文本吗?

非常感谢任何帮助/建议!

1 个答案:

答案 0 :(得分:2)

禁用组件的颜色是操作系统调节的事项之一,因此无法在SWT中更改该颜色。

然而,您可以将Listener添加到SWT.Paint并自己绘制一些内容。


您可以将此作为起点:

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是自定义的:

enter image description here