Java SWT不';不允许添加文本字段作为子菜单

Java SWT不';不允许添加文本字段作为子菜单,java,swing,menu,swt,Java,Swing,Menu,Swt,我们发现,如果将JTextField作为子菜单添加到SWT中,则不可能在其中插入文本。有人知道如何解决这个问题吗?还是在Eclipse社区论坛中创建缺陷更好 public class Test { private static JPopupMenu popup; public static void main(String[] args) { switch (args[0]) { case "-swing": star

我们发现,如果将
JTextField
作为子菜单添加到SWT中,则不可能在其中插入文本。有人知道如何解决这个问题吗?还是在Eclipse社区论坛中创建缺陷更好

public class Test {

    private static JPopupMenu popup;

    public static void main(String[] args) {

        switch (args[0]) {
        case "-swing":
            startSwingApp();
            break;
        case "-swt":
            startSWTApp();
            break;
        }
    }

    private static void startSwingApp() {
        JFrame f = new JFrame();
        f.setTitle("Swing application");
        JPanel panel = new JPanel();
        f.add(panel);
        panel.addMouseListener(new MouseHandler());

        initPopup();

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(640, 480);
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    private static void startSWTApp() {
        Display display = Display.getDefault();
        final Shell shell = new Shell();
        shell.setSize(450, 300);
        shell.setText("SWT Application");
        shell.setLayout(new FillLayout());

        Composite composite = new Composite(shell, SWT.EMBEDDED);
        Frame frame = SWT_AWT.new_Frame(composite);
        JApplet applet = new JApplet();
        frame.add(applet);
        JPanel panel = new JPanel();
        panel.addMouseListener(new MouseHandler());
        applet.add(panel);

        initPopup();

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

    private static void initPopup() {
        popup = new JPopupMenu() {

            @Override
            public void show(Component arg0, int arg1, int arg2) {
                JMenu menu = new JMenu();
                this.add(menu);
                JPanel panel = new JPanel();
                menu.add(panel);
                JTextField tf = new JTextField(10);
                panel.add(tf);
                tf.setText("Some text");
                super.show(arg0, arg1, arg2);
            }

        };
    }

    private static class MouseHandler extends MouseAdapter {
        @Override
        public void mousePressed(MouseEvent e) {
            System.out.println("Mouse pressed");
            maybeShowPopup(e);
        }

        @Override
        public void mouseReleased(MouseEvent e) {
            maybeShowPopup(e);
        }

        private void maybeShowPopup(MouseEvent e) {
            System.out.println("maybeShowPopup() called");
            if (e.isPopupTrigger()) {
                popup.show(e.getComponent(), e.getX(), e.getY());
            }
        }
    }
}

怎么可能呢
JMenu.add(JTextField)
工作正常。请尝试编译并运行此代码。您将看到,在Swing模式下,您可以在Textfield中输入文本,而在SWT中则不能。为什么要混合UI框架?