gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:01:24 25 4
gpt4 key购买 nike

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

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

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

最佳答案

禁用组件的颜色是由操作系统控制的事物之一,因此不可能在 SWT 中更改该颜色。

但是,您可以向 SWT.Paint 添加一个 Listener 并自己绘制一些内容。

<小时/>

您可以以此为起点:

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

关于Java 在禁用的 SWT 文本字段中设置文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21913207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com