gpt4 book ai didi

java - 无法更新 keyPressed() 内的标签

转载 作者:行者123 更新时间:2023-12-01 11:14:00 26 4
gpt4 key购买 nike

我刚刚开始学习Java。我已经研究过 Swing,目前我正在尝试使用 SWT 做一些事情。

但是我有下一个问题。我为文本字段添加的关键监听器正在工作,但在这个监听器中我无法更改例如我的标签。

我看过一些他们工作的演示,但我没有看到任何差异。

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

public class FirstClass {
public static void main(String[] args) {
Display display = new Display();

Shell shell = new Shell(display);
shell.setText("First Application");

GridLayout layout = new GridLayout(2, false);
shell.setLayout(layout);

Text word = new Text(shell,SWT.SINGLE | SWT.BORDER | SWT.FILL);
GridData wordGrDt = new GridData();
wordGrDt.heightHint = 130;
wordGrDt.minimumHeight = 130;
wordGrDt.horizontalAlignment = SWT.FILL;
wordGrDt.verticalAlignment = SWT.FILL;
wordGrDt.horizontalSpan = 2;
word.setLayoutData(wordGrDt);

GridData statusGrDt = new GridData();
statusGrDt.grabExcessHorizontalSpace = true;
statusGrDt.horizontalSpan = 1;
statusGrDt.horizontalAlignment = SWT.LEFT_TO_RIGHT;
Label status = new Label(shell, SWT.PUSH);
status.setEnabled(true);
status.setText("");
status.setLayoutData(statusGrDt);

GridData checkGrDt = new GridData();
checkGrDt.widthHint = 150;
checkGrDt.horizontalSpan = 1;
checkGrDt.horizontalAlignment = SWT.RIGHT_TO_LEFT;
Button check = new Button(shell, SWT.PUSH);
check.setText("Check");
check.setLayoutData(checkGrDt);

word.addKeyListener(new org.eclipse.swt.events.KeyAdapter() {
public void keyPressed(org.eclipse.swt.events.KeyEvent e) {
if (e.keyCode == SWT.CR) {
System.out.println("worked!!!");
status.setText("ababahalamaha");
}
}
});

shell.setMinimumSize(400, 300);
shell.open();
shell.pack();

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

}

最佳答案

Label 的父级添加 layout() 调用:

word.addKeyListener(new org.eclipse.swt.events.KeyAdapter() {
public void keyPressed(org.eclipse.swt.events.KeyEvent e) {
if (e.keyCode == SWT.CR) {
System.out.println("worked!!!");
status.setText("ababahalamaha");
status.getParent().layout();
}
}
});

标签最初的宽度为 0,因为它不包含任何文本。当您添加内容时,父级必须知道重新布局其子级。

<小时/>

作为注释:

请检查您对哪个小部件使用哪种样式。例如,Label 不知道如何处理 SWT.PUSH 样式。

关于java - 无法更新 keyPressed() 内的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32049520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com