셸을 열고 액티브로 만들 수있는 방법이 있는지 알아야합니다. 콘트롤을 클릭하더라도 말이죠. 내가 필요한 것이 무엇인지를 설명하는 가장 좋은 방법은이 작은 예를 보여주는 것입니다. 첫 번째 쉘을 활성 상태로 유지해야합니다. 두 번째 쉘을 클릭하거나 포함 된 위젯을 클릭합니다.쉘을 활성화하지 않고 어떻게 열 수 있습니까?
public class TestMeOut
{
public static void main(final String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
final Shell shell2 = new Shell(shell);
shell2.setLayout(new GridLayout());
final Button btn = new Button(shell, SWT.PUSH);
final Button btn2 = new Button(shell2, SWT.PUSH);
btn.setText("Test me");
btn2.setText("I steal focus");
btn.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent e)
{
shell2.setVisible(true);
}
});
btn2.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent e)
{
shell2.setVisible(false);
}
});
shell.pack();
shell.open();
shell.addShellListener(new ShellListener()
{
public void shellIconified(final ShellEvent e)
{
}
public void shellDeiconified(final ShellEvent e)
{
}
public void shellDeactivated(final ShellEvent e)
{
System.out.println("Deactivated! This isn't supposed to happen.");
}
public void shellClosed(final ShellEvent e)
{
}
public void shellActivated(final ShellEvent e)
{
System.out.println("Activated!");
}
});
shell2.pack();
shell2.open();
shell2.setVisible(false);
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
미리 감사드립니다.
당신은 자식 쉘 종료하지 않는 한 부모 쉘과 상호 작용 할 수 없도록 할 두 번째Shell
의 스타일을 변경하고
SWT.APPLICATION_MODAL
을 사용할 수 있습니다
: 당신은 아이가 클릭 할 때 초점을 푸는 부모를 원하지 않는 반면에 경우
UPDATE
, 단지 아이를 비활성화 여전히 비활성화됩니다. 항상 활동적으로 있어야합니다. – spetrila
@JNewbie 그래서 부모님은 계속 활동하고 아이는 활동하지 않기를 원하십니까? – Baz
예, 아이를 클릭해도 부모는 계속 활성 상태 여야합니다. – spetrila