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的就不能正常响应吗?
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的就不能正常响应吗?
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);
}
}
还有啊,我很疑惑啊,你的JMenuItem可以放到Menu里面去?代码不是很完整,没看到你是怎么添加的。
代码不全,没太看明白直觉 textArea.requestFocus(); 似乎有问题,注掉试试看
对不起,问题没有表达清楚。我的MenuItem加在Menu里面。然后对Menu写监听,就是那个check()方法
文本显示用的是JTextArea
是不是因为MenuItem是SWT的,
JTextArea是Swing的,监听就不能正常响应?