Menu menuEdit = new Menu("编辑(E)", true);
        JMenuItem menuEditCopy = new    JMenuItem("复制");
           ……
               ……        JTextArea textArea = new JTextArea();
menuEdit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
MenuDemoListener.check();
textArea.requestFocus();
}
});
public class MenuDemoListener{
  ……
    ……
      …… public static  void check() {
String st = Tsss.textArea.getSelectedText();
if (st == null) {
MenuDemo.menuEditCut.setEnabled(false);
MenuDemo.menuEditCopy.setEnabled(false);
MenuDemo.menuEditDeleteSelection.setEnabled(false);
} else {
MenuDemo.menuEditCut.setEnabled(true);
MenuDemo.menuEditCopy.setEnabled(true);
MenuDemo.menuEditDeleteSelection.setEnabled(true);
}
}
   }为什么check()这个方法不起作用?就是当我选中了一些文本后,再点击编辑菜单,里面的剪切,复制还是处于setEnabled(false)的状态?难道是因为menuEdit是SWT的,menuEditCut,menuEditCopy是Swing的就不能正常响应吗?

解决方案 »

  1.   

    public static  void check() { 
    String st = Tsss.textArea.getSelectedText(); 
    if (st == null) { 
    menuEditCut.setEnabled(false); 
    menuEditCopy.setEnabled(false); 
    menuEditDeleteSelection.setEnabled(false); 
    } else { 
    menuEditCut.setEnabled(true); 
    menuEditCopy.setEnabled(true); 
    menuEditDeleteSelection.setEnabled(true); 


      

  2.   

    你可以在check方法中加一条打印语句,看下菜单的显示和打印语句的执行哪个先,哪个后
    还有啊,我很疑惑啊,你的JMenuItem可以放到Menu里面去?代码不是很完整,没看到你是怎么添加的。
      

  3.   

    Menu是AWT?SWT?
    代码不全,没太看明白直觉 textArea.requestFocus();  似乎有问题,注掉试试看
      

  4.   

    对不起,不是JMenuItem,是MenuItem
      

  5.   


    对不起,问题没有表达清楚。我的MenuItem加在Menu里面。然后对Menu写监听,就是那个check()方法
    文本显示用的是JTextArea
    是不是因为MenuItem是SWT的,
    JTextArea是Swing的,监听就不能正常响应?
      

  6.   

    按您的方法试过了,check()方法没有运行,不知道什么原因