当前位置: 代码迷 >> Java相关 >> java中e.getModifiers()的功用
  详细解决方案

java中e.getModifiers()的功用

热度:1231   发布时间:2013-02-25 21:45:11.0
java中e.getModifiers()的作用
public void initMusicModeControl() {
but_music.addMouseListener(new MouseAdapter() {

MyMenu popup_menuList = new MyMenu("播放曲目");

public void mouseClicked(MouseEvent e) {
int mod = e.getModifiers() & 4;
if (e.getButton() == MouseEvent.BUTTON1
&& e.getClickCount() == 2) {
int index = list.getSelectedIndex();
if (but_music.getActionCommand() == "true") {
changToMusicMode();
} else {
changToMoveMode(index);
}
} else if (mod != 0) {
System.out.println("Ok");

popup_menu.add(popup_menuList);
popup_menu.show(but_music, e.getX(), e.getY());
popupList.setSelectedIndex(list.getSelectedIndex());
popup_menuList.add(popupList);
}
}
});
}
上面代码中int mod = e.getModifiers() & 4的作用是什么,什么意思啊;
getModifiers()返回此类或接口以整数编码的 Java 语言修饰符是什么意思啊?

------解决方案--------------------------------------------------------
就是前面的修饰符,像public static之类的,只不过所有的修饰符都是不冲突的数字,这样一个数字就能代表多个修饰符,例如public 是 00000001而static 是 00000010,那么合在一起就是00000011 就代表public static了
具体的含义,请参见Modifier这个类
------解决方案--------------------------------------------------------
这个在Modifier类里面有定义的
Java code
/*     * Access modifier flag constants from <em>The Java Virtual     * Machine Specification, Second Edition</em>, tables 4.1, 4.4,     * 4.5, and 4.7.     */    /**     * The <code>int</code> value representing the <code>public</code>      * modifier.     */        public static final int PUBLIC           = 0x00000001;    /**     * The <code>int</code> value representing the <code>private</code>      * modifier.     */        public static final int PRIVATE          = 0x00000002;    /**     * The <code>int</code> value representing the <code>protected</code>      * modifier.     */        public static final int PROTECTED        = 0x00000004;    /**     * The <code>int</code> value representing the <code>static</code>      * modifier.     */        public static final int STATIC           = 0x00000008;    /**     * The <code>int</code> value representing the <code>final</code>      * modifier.     */        public static final int FINAL            = 0x00000010;    /**     * The <code>int</code> value representing the <code>synchronized</code>      * modifier.     */        public static final int SYNCHRONIZED     = 0x00000020;    /**     * The <code>int</code> value representing the <code>volatile</code>      * modifier.     */        public static final int VOLATILE         = 0x00000040;    /**     * The <code>int</code> value representing the <code>transient</code>      * modifier.     */        public static final int TRANSIENT        = 0x00000080;    /**     * The <code>int</code> value representing the <code>native</code>      * modifier.     */        public static final int NATIVE           = 0x00000100;    /**     * The <code>int</code> value representing the <code>interface</code>      * modifier.     */        public static final int INTERFACE        = 0x00000200;    /**     * The <code>int</code> value representing the <code>abstract</code>      * modifier.     */        public static final int ABSTRACT         = 0x00000400;    /**     * The <code>int</code> value representing the <code>strictfp</code>      * modifier.     */        public static final int STRICT           = 0x00000800;    // Bits not (yet) exposed in the public API either because they    // have different meanings for fields and methods and there is no    // way to distinguish between the two in this class, or because    // they are not Java programming language keywords    static final int BRIDGE    = 0x00000040;    static final int VARARGS   = 0x00000080;    static final int SYNTHETIC = 0x00001000;    static final int ANNOTATION= 0x00002000;    static final int ENUM      = 0x00004000;
  相关解决方案