Topic: Swing事件求助

  Print this page

1.Swing事件求助 Copy to clipboard
Posted by: whisperwind
Posted on: 2005-03-01 17:24

我现有一个Swing程序,主窗口是一个JFrame,里面包含一些Swing的子构件。现在我想在子构件获取到鼠标点击事件前做一些预处理,如果不符合条件的就不将此鼠标事件传给子构件。请问,这应该如何实现?

2.Re:Swing事件求助 [Re: whisperwind] Copy to clipboard
Posted by: JackLou
Posted on: 2005-03-02 20:23

那就在JFrame里先预处理一下再发回队列

3.Re:Swing事件求助 [Re: JackLou] Copy to clipboard
Posted by: whisperwind
Posted on: 2005-03-03 10:49

JackLou wrote:
那就在JFrame里先预处理一下再发回队列

请讲得详细点

4.Re:Swing事件求助 [Re: whisperwind] Copy to clipboard
Posted by: Duncan
Posted on: 2005-03-03 15:16

whisperwind wrote:
我现有一个Swing程序,主窗口是一个JFrame,里面包含一些Swing的子构件。现在我想在子构件获取到鼠标点击事件前做一些预处理,如果不符合条件的就不将此鼠标事件传给子构件。请问,这应该如何实现?


JFrame 是個 RootPaneContainer,RootPaneContainer 的 layer pane 中最上層是一個 invisible glass pane,你使 glass pane 成為 visible 它就會攔截 mouse input。

檢查你的條件後若決定讓 JFrame 裡的 child component 處理這個事件,再重新包裝 MouseEvent 交給 child component 去 dispatch。

以下是你可能需要用到的 method:
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFrame.html#getGlassPane()
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/MouseEvent.html#MouseEvent(java.awt.Component,%20int,%20long,%20int,%20int,%20int,%20int,%20boolean,%20int)
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Container.html#findComponentAt(java.awt.Point)
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/SwingUtilities.html#convertPoint(java.awt.Component,%20java.awt.Point,%20java.awt.Component)
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Component.html#dispatchEvent(java.awt.AWTEvent)


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923