为了账号安全,请及时绑定邮箱和手机立即绑定

java jfream中鼠标事件问题

java jfream中鼠标事件问题

汪汪一只猫 2018-12-07 13:53:06
import java.awt.BorderLayout; public class text2 extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { text2 frame = new text2(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public text2() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); JScrollPane scrollPane = new JScrollPane(); contentPane.add(scrollPane, BorderLayout.CENTER); final JTextArea textArea = new JTextArea(); scrollPane.setViewportView(textArea); JMenuBar menuBar = new JMenuBar(); scrollPane.setColumnHeaderView(menuBar); JMenu menu = new JMenu("\u7F16\u8F91"); menuBar.add(menu); JMenuItem mntmCopy = new JMenuItem("copy"); mntmCopy.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { textArea.copy(); } }); menu.add(mntmCopy); JMenuItem mntmPaste = new JMenuItem("paste"); mntmPaste.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { textArea.paste(); } }); menu.add(mntmPaste); JMenuItem mntmCut = new JMenuItem("cut"); mntmCut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {//mouseclick textArea.cut(); } }); menu.add(mntmCut); } } 这是改好的,原来的监听事件为mouseclick,可是就是不起作用,不知原因,请教帮助解答。 类似处的事件都是这样的: JMenuItem mntmCut = new JMenuItem("cut"); mntmCut.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { text.cut(); } }); menu.add(mntmCut); 结果触发不成功,但是想知道原因。。。。。。。。。。。
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

我猜,MouseEvent是比ActionEvent更低级的事件,后者是在前者的基础上实现的,控件捕获低级鼠标事件(以检测高级ActionEvent?),处理之后就不再触发鼠标事件的监听器了。

我又猜,如果你监听一下鼠标按键按下的事件(mousepressed?方法名不记得,现在手机打字,不方便看javadoc),极有可能被调用到。

另外有一个信息,可能对你有用:mouseevent类或者它的某个父类,有一个方法是阻止事件继续被派发(到其他监听器),我想你的疑问,答案或许和这个方法有关,也就是这个方法被控件类内部实现调用过了。我现在手机打字,不方便查看apidoc,方法名不记得,不过你自己应该可以找到:-)

查看完整回答
反对 回复 2018-12-16
  • 1 回答
  • 0 关注
  • 674 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信