我有一个复合元素,最初有一个Label.现在我调用dispose(标签)并在同一个容器(复合榆树)中创建另一个标签,但我没有看到新文本.它让我质疑如何在复合上启用重绘,以便新标签(或我可能创建的任何其他组件)将代替旧标签.这是我的代码(分为单元测试重绘复合)
private Label createLabel( Composite parent) {
Label label = new Label(parent, SWT.NONE);
label.setAlignment(SWT.CENTER);
label.setLayoutData( new GridData( SWT.CENTER, SWT.CENTER, true, true) );
return label;
}
private void changeText() {
assert testCell != null : "Please initialize test cell";
testCell.getChildren()[0].dispose();
Label l = createLabel(testCell);
l.setText("New TexT");
testCell.redraw();
}
private void draw() {
Display display = new Display();
shell = new Shell(display);
shell.setLayout(new GridLayout(2,false));
testCell = new Composite(shell,SWT.BORDER);
testCell.setLayout(new GridLayout());
Label l = createLabel(testCell);
l.setText("Old Text");
Composite btnCell = new Composite(shell,SWT.NONE);
btnCell.setLayout(new …Run Code Online (Sandbox Code Playgroud) 我在SWT GUI应用程序中使用GridLayout.我为每个网格单元定义了以下GridData.网格单元本身只是一个标签.
GridData gridData = new GridData();
gridData.horizontalAlignment = GridData.FILL;
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
gridData.heightHint = 25;
gridData.widthHint = 25;
gridData.verticalAlignment = GridData.VERTICAL_ALIGN_CENTER;
gridData.verticalIndent = 10;
Run Code Online (Sandbox Code Playgroud)
我创建了这样的每个标签元素 -
Label l = new Label(shell, SWT.BORDER);
l.setAlignment(SWT.CENTER);
l.setText("some text");
l.setLayoutData( gridData );
Run Code Online (Sandbox Code Playgroud)
现在我的问题是尽管在标签本身上使用了verticalAlignment属性,verticalIndent属性和setAlignment,但我无法使文本对齐网格单元区域(25 x 25)垂直居中.我想我错过了什么.如何在网格单元中实现垂直居中对齐?
我正在使用Xerial最新的jdbc驱动程序用于sqlite(版本3.7.2)它似乎不支持Statement RETURN_GENERATED_KEYS.我在SQLException中继续"未通过SQLite JDBC驱动程序实现".
我真的不想进行另一个选择调用(例如,从任务顺序中选择1个desc限制1)以获取由自动增量字段创建的最新Id.我需要使用该id来填充另一个表中的字段.
有没有更好的方法来实现这个使用sqlite-jdbc驱动程序?