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框架?