如何在 SWT DateTime 小部件中的 DD MM 或 YYYY 字段上设置边距?
How do I set margins on the DD MM or YYYY fields within an SWT DateTime widget?
我正在使用 org.eclipse.swt.widgets.DateTime
小部件的实例让用户在 UI 中设置日期,但我在正确设置结果的边距和样式时遇到了问题。我正在使用 SWT.DATE
和 SWT.DROP_DOWN
并从开箱即用的小部件中获取我需要的一切,这很好,但是我如何让输入中的文本有边距,这样它就不会开始就在输入框的边缘?
或者,我能否以某种方式在 DateTime 内部组合中设置填充?我尝试了通常的方法,但只成功地在 Composite 本身上设置了边距...
现在,它看起来像这样:
使用此代码实例化:
(...)
dateInputComposite = new Composite(parent, SWT.LEFT);
Label datumLabel = new Label(dateInputComposite, SWT.LEFT);
dateLabel.setText(DATE_LABEL_TEXT);
dateLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_CENTER | GridData.HORIZONTAL_ALIGN_FILL));
DateTime dateInputWidgetWidget = new DateTime(dateInputComposite, SWT.DATE | SWT.DROP_DOWN);
// create bindings for dateInputWidgetWidget here
new DateTime(dateInputComposite, SWT.DATE | SWT.DROP_DOWN);
GridLayoutFactory.fillDefaults().margins(0, 0).numColumns(3).applyTo(dateInputComposite);
如果您不介意使用 Nebula's CDateTime
,那么您可以定义自己的模式并将其设置为:" dd/MM/yyyy"
(注意开头的 space 字符)添加一些人为的 margin/padding.
这是一个例子:
public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Whosebug");
shell.setLayout(new FillLayout());
CDateTime dateTime = new CDateTime(shell, CDT.DATE_MEDIUM | CDT.DROP_DOWN);
dateTime.setPattern(" dd/MM/yyyy");
dateTime.setSelection(new Date());
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
看起来像这样:
或使用 " dd / MM / yyyy "
:
在每个组件周围添加填充
我正在使用 org.eclipse.swt.widgets.DateTime
小部件的实例让用户在 UI 中设置日期,但我在正确设置结果的边距和样式时遇到了问题。我正在使用 SWT.DATE
和 SWT.DROP_DOWN
并从开箱即用的小部件中获取我需要的一切,这很好,但是我如何让输入中的文本有边距,这样它就不会开始就在输入框的边缘?
或者,我能否以某种方式在 DateTime 内部组合中设置填充?我尝试了通常的方法,但只成功地在 Composite 本身上设置了边距...
现在,它看起来像这样:
使用此代码实例化:
(...)
dateInputComposite = new Composite(parent, SWT.LEFT);
Label datumLabel = new Label(dateInputComposite, SWT.LEFT);
dateLabel.setText(DATE_LABEL_TEXT);
dateLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_CENTER | GridData.HORIZONTAL_ALIGN_FILL));
DateTime dateInputWidgetWidget = new DateTime(dateInputComposite, SWT.DATE | SWT.DROP_DOWN);
// create bindings for dateInputWidgetWidget here
new DateTime(dateInputComposite, SWT.DATE | SWT.DROP_DOWN);
GridLayoutFactory.fillDefaults().margins(0, 0).numColumns(3).applyTo(dateInputComposite);
如果您不介意使用 Nebula's CDateTime
,那么您可以定义自己的模式并将其设置为:" dd/MM/yyyy"
(注意开头的 space 字符)添加一些人为的 margin/padding.
这是一个例子:
public static void main(String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Whosebug");
shell.setLayout(new FillLayout());
CDateTime dateTime = new CDateTime(shell, CDT.DATE_MEDIUM | CDT.DROP_DOWN);
dateTime.setPattern(" dd/MM/yyyy");
dateTime.setSelection(new Date());
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
看起来像这样:
或使用 " dd / MM / yyyy "
: