Java 模拟SWT中按下的TAB键
我试图在SWT中模拟tab键按下事件,但我找不到任何方法来实现这一点 我有一个包含一个texfield、一个ListViewer和一个按钮的组合Java 模拟SWT中按下的TAB键,java,events,swt,listener,Java,Events,Swt,Listener,我试图在SWT中模拟tab键按下事件,但我找不到任何方法来实现这一点 我有一个包含一个texfield、一个ListViewer和一个按钮的组合 当我在文本字段中按tab键时,我想将焦点设置在按钮上,而不是列表查看器上。你调查过这个家伙吗 我还没有尝试过这种方法,但是上面的代码片段改变了选项卡顺序。有两种方法可以解决这个问题: 定义一个所谓的“制表顺序”,它告诉父对象按给定顺序遍历其子对象 听SWT。遍历,阻止事件并手动强制聚焦按钮 以下是两种解决方案的一些代码: 一, 二, 您想更改选项卡顺
当我在文本字段中按tab键时,我想将焦点设置在按钮上,而不是列表查看器上。你调查过这个家伙吗
我还没有尝试过这种方法,但是上面的代码片段改变了选项卡顺序。有两种方法可以解决这个问题:
SWT。遍历,阻止事件并手动强制聚焦按钮
您想更改选项卡顺序。对于此用途
setTabList(Control[])
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("StackOverflow");
shell.setLayout(new FillLayout());
Button button = new Button(shell, SWT.PUSH);
button.setText("Button");
Text text = new Text(shell, SWT.BORDER);
new Text(shell, SWT.BORDER).setText("This won't get focused.");
shell.setTabList(new Control[] {text, button});
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}
public static void main(String[] args)
{
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("StackOverflow");
shell.setLayout(new FillLayout());
Button button = new Button(shell, SWT.PUSH);
button.setText("Button");
Text text = new Text(shell, SWT.BORDER);
new Text(shell, SWT.BORDER).setText("This won't get focused.");
text.addListener(SWT.Traverse, e -> {
if(e.detail == SWT.TRAVERSE_TAB_NEXT)
{
e.doit = false;
button.forceFocus();
}
});
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
}
}
display.dispose();
}