2012-11-27 51 views

回答

1

如果您想更改提示的顏色,只需在焦點事件中添加Listener即可。

public class StackOverflow 
{ 
    public static void main(String[] args) 
    { 
     final Display display = new Display(); 
     Shell shell = new Shell(display); 
     shell.setText("StackOverflow"); 
     shell.setLayout(new GridLayout(1, true)); 

     final Text text = new Text(shell, SWT.BORDER | SWT.SEARCH); 
     text.setForeground(display.getSystemColor(SWT.COLOR_RED)); 
     text.setText("Enter something"); 
     text.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, true)); 

     text.addListener(SWT.FocusOut, new Listener() 
     { 
      @Override 
      public void handleEvent(Event arg0) 
      { 
       if("".equals(text.getText())) 
       { 
        text.setForeground(display.getSystemColor(SWT.COLOR_RED)); 
        text.setText("Enter something"); 
       } 
      } 
     }); 

     text.addListener(SWT.FocusIn, new Listener() 
     { 
      @Override 
      public void handleEvent(Event arg0) 
      { 

       if("Enter something".equals(text.getText())) 
       { 
        text.setForeground(display.getSystemColor(SWT.COLOR_BLACK)); 
        text.setText(""); 
       } 
      } 
     }); 

     Label label = new Label(shell, SWT.NONE); 
     label.setFocus(); 
     label.forceFocus(); 

     shell.pack(); 
     shell.open(); 
     while (!shell.isDisposed()) 
     { 
      if (!display.readAndDispatch()) 
       display.sleep(); 
     } 
     display.dispose(); 
    } 
} 

不聚焦/空:

enter image description here

重點的/不爲空:

enter image description here

正如你所看到的, 「提示」 現在是紅色的。

+0

我想添加提示: text.setMessage(「Enter something」); 在您的實施中: 1.如果我嘗試閱讀空白文本的內容,我將得到「輸入內容」 2.我不想清除FocusIn上的字段。使用Tab鍵切換表格將清除所有字段。 – KrzyH

+0

@KrzyH我不明白。您使用'setMessage()'設置的文本將只在文本字段爲空時顯示,不是嗎?然後我看不到清除它的問題。我改變了'FocusIn',這樣它只會清除該字段,如果它包含一些與提示不同的文本。 – Baz

+0

使用setMessage()設置的文本僅在文本字段爲空時纔可見。但我想更改默認消息/提示文本顏色。 – KrzyH