1
我正在使用禁用的SWT文本字段(import org.eclipse.swt.widgets.Text
),我基本上要設置文本顏色。Java在禁用SWT文本字段中設置文本顏色
我知道在JTextField
你可以使用setDisabledTextColor(Color c)
來設置禁用文本的顏色,但是有什麼用於swt widget文本?
任何幫助/建議非常感謝!
我正在使用禁用的SWT文本字段(import org.eclipse.swt.widgets.Text
),我基本上要設置文本顏色。Java在禁用SWT文本字段中設置文本顏色
我知道在JTextField
你可以使用setDisabledTextColor(Color c)
來設置禁用文本的顏色,但是有什麼用於swt widget文本?
任何幫助/建議非常感謝!
禁用組件的顏色是受OS限制的那些顏色之一,所以在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
是自定義一個:
謝謝你你的幫助,我會在早上第一件事情,如果你能提供僞代碼/示例代碼,這將是一個很大的好處,我會接受你的nswer! –