私は、JFace PopupDialogをユーザ入力用の軽量ダイアログとして使いたいと考えています。しかし、私はテキストウィジェットの背景色にいくつかの問題があります。JFace PopupDialogのウィジェットの背景色
1にあるように、SWT.MULTIテキストウィジェットには背景と枠線がなく、SWT.SINGLEテキストウィジェットには背景がありません。誰もがこれを適切に処理するために、どのように任意のアイデアを持ってい
Text comment = new Text(composite, SWT.MULTI|SWT.BORDER);
comment.setFocus();
comment.setBackground(new Color(Display.getDefault(), new RGB(000, 000, 000)));
// method of PopupDialog
applyBackgroundColor(new Color(Display.getDefault(), new RGB(000, 000, 000)), comment);
: は、私は背景色を上書きしようとしましたか?
ありがとうございます!
EDIT:要求されたようが、ここでポップアップのソースです。私はポップアップが次のカーソルの位置に開くことがしたかったように私は、PopupDialogをサブクラス化:
public class MouseLocationPopupDialog extends PopupDialog {
private final static int SHELL_STYLE = PopupDialog.INFOPOPUP_SHELLSTYLE;
public MouseLocationPopupDialog(Shell parent, String infoText) {
this(parent, SHELL_STYLE, true, false, false, false, false, null, infoText);
}
public MouseLocationPopupDialog(Shell parent, String titleText, String infoText) {
this(parent, SHELL_STYLE, true, false, false, false, false, titleText, infoText);
}
public MouseLocationPopupDialog(Shell parent, String infoText, final Point size) {
this(parent, infoText);
getShell().setSize(size);
}
public MouseLocationPopupDialog(Shell parent, int shellStyle, boolean takeFocusOnOpen, boolean persistSize, boolean persistLocation, boolean showDialogMenu, boolean showPersistActions, String titleText, String infoText) {
super(parent, shellStyle, takeFocusOnOpen, persistSize, persistLocation, showDialogMenu, showPersistActions, titleText, infoText);
}
@Override
protected void adjustBounds() {
super.adjustBounds();
Display d = Display.getCurrent();
if (d == null) {
d = Display.getDefault();
}
Point point = d.getCursorLocation();
getShell().setLocation(point.x + 9, point.y + 14);
}
}
次のように実際の使用法は次のとおりです。このポップアップは独立していること
final PopupDialog dialog = new MouseLocationPopupDialog(HandlerUtil.getActiveShell(event), "Title", "Bottom bar") {
@Override
protected Control createDialogArea(Composite parent) {
Control composite = super.createDialogArea(parent);
Composite table = new Composite((Composite) composite, SWT.NONE);
table.setLayout(new GridLayout(2, true));
// text is a member variable
text = new Text(table, SWT.SINGLE | SWT.BORDER);
Button submit = new Button(table, SWT.PUSH);
return composite;
}
@Override
protected Control createContents(Composite parent) {
Control contents = super.createContents(parent);
final Color backgroundColor = new Color(Display.getCurrent(), new RGB(255, 255, 255));
text.setBackground(backgroundColor);
final Color foregroundColor = new Color(Display.getCurrent(), new RGB(0,0,0));
text.setForeground(foregroundColor);
backgroundColor.dispose();
foregroundColor.dispose();
return contents;
}
};
dialog.open();
注意を他のUI要素から:コードは、他のJFaceのダイアログ(例えばTitleAreaDialog)すべての
ジャスト(applyBackground、ちょうどcomment.setBackgroundなし)は、Windows 7上でのEclipseインディゴ上でこれを試したし、テキストボックス黒を示しました。バックグラウンド。あなたはどのOSを使用していますか?また、終了したColorオブジェクトを処分することを忘れないでください。 –
私はOSXを使用しています。 WindowsとLinuxで試してみます。 –
ただのofftopic:あなたは全体のコードを投稿できますか?私はこのようなダイアログに興味があります –