import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JTextArea;class Srpopmenu extends JFrame implements ActionListener, MouseListener
{
private static final long serialVersionUID = 2262184115394670248L; //这里做什么用的? private JTextArea srm = new JTextArea(); private JPopupMenu pm = new JPopupMenu(); private JMenuItem item1 = new JMenuItem("复制"); private JMenuItem item2 = new JMenuItem("剪切"); private JMenuItem item3 = new JMenuItem("粘贴"); public Srpopmenu()
{
setTitle("弹出式菜单");
setSize(300, 200);
setLocationRelativeTo(null); //?
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //?
add(srm);
srm.add(pm);
pm.add(item1);
pm.add(item2);
pm.add(item3);
item1.addActionListener(this); //这里为什么用this,而不用以前的new ActionListener非常不解中
item2.addActionListener(this);
item3.addActionListener(this);
srm.addMouseListener(this);
setVisible(true);
} public void actionPerformed(ActionEvent e)
{
System.out.println(((JMenuItem)e.getSource()).getText());
} public void mouseReleased(MouseEvent e)
{
if(e.isPopupTrigger())
{
pm.show(srm, e.getX(), e.getY()); //这里e.getX()有这个方法吗?
}
}
public void mouseClicked(MouseEvent e)
{} public void mouseEntered(MouseEvent e)
{} public void mouseExited(MouseEvent e)
{} public void mousePressed(MouseEvent e)
{} public static void main(String args[])
{
new Srpopmenu();
}
}
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JTextArea;class Srpopmenu extends JFrame implements ActionListener, MouseListener
{
private static final long serialVersionUID = 2262184115394670248L; //这里做什么用的? private JTextArea srm = new JTextArea(); private JPopupMenu pm = new JPopupMenu(); private JMenuItem item1 = new JMenuItem("复制"); private JMenuItem item2 = new JMenuItem("剪切"); private JMenuItem item3 = new JMenuItem("粘贴"); public Srpopmenu()
{
setTitle("弹出式菜单");
setSize(300, 200);
setLocationRelativeTo(null); //?
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //?
add(srm);
srm.add(pm);
pm.add(item1);
pm.add(item2);
pm.add(item3);
item1.addActionListener(this); //这里为什么用this,而不用以前的new ActionListener非常不解中
item2.addActionListener(this);
item3.addActionListener(this);
srm.addMouseListener(this);
setVisible(true);
} public void actionPerformed(ActionEvent e)
{
System.out.println(((JMenuItem)e.getSource()).getText());
} public void mouseReleased(MouseEvent e)
{
if(e.isPopupTrigger())
{
pm.show(srm, e.getX(), e.getY()); //这里e.getX()有这个方法吗?
}
}
public void mouseClicked(MouseEvent e)
{} public void mouseEntered(MouseEvent e)
{} public void mouseExited(MouseEvent e)
{} public void mousePressed(MouseEvent e)
{} public static void main(String args[])
{
new Srpopmenu();
}
}
解决方案 »
- java char怎么转int
- 菜鸟救助 String类 的内存是怎样分配的??
- FileWrider和FileReader
- 来一个sun公司的笔试题!看看大家的答案
- 高人请进:如何人为地迫使容器调用有状态sessionbean的activate和passaivate方法?
- 高手来帮帮忙,在线等!(30分)
- 请问怎么报Rs没找到?
- JAVA可以真正实现实数的相等比较吗?
- 除数为0问题
- Java zip压缩的文件 Java 解压不了。但winrar可以
- String 类和StringBuffer类的区别
- 昨天,我的可用分为800分,今天是928分.昨天获得技术分是5分. 怎么会一下子多出128分呢?
楼主【sure2003】截止到2008-07-13 07:01:31的历史汇总数据(不包括此帖):
发帖的总数量:225 发帖的总分数:9763 每贴平均分数:43
回帖的总数量:186 得分贴总数量:4 回帖的得分率:2%
结贴的总数量:223 结贴的总分数:9727
无满意结贴数:2 无满意结贴分:50
未结的帖子数:2 未结的总分数:36
结贴的百分比:99.11 % 结分的百分比:99.63 %
无满意结贴率:0.90 % 无满意结分率:0.51 %
值得尊敬
这个随机字符串用来标识版本,2个类有相同的UI几率很低的。在序列化和反序列化时有用。
item1.addActionListener(this);因为你自己就实现了接口啊!
class Srpopmenu extends JFrame implements ActionListener, MouseListener
既然自己就可以做,何必再雇佣一个呢?
这个是标识该类的数字 item1.addActionListener(this); //这里为什么用this,而不用以前的new ActionListener非常不解中
这个是注册事件处理监听器,就是将item1的事件处理委托给this进行处理。
不能创建的原因有2个:
1、在构造方法内部创建自己的对象会导致死循环
2、每个类都有默认的创建好的对象this,不需要再创建了
这个看下API 应该是获得事件的坐标
this代表当前的实例化对象,如果用new...,就得用新的实例化对象,一般没什么关系,在极特殊情况下(如需要在事件处理方法中访问当前对象的变量)必须用this。
serialVersionUID是对象串行化时用的唯一ID。
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JTextArea;
public /*为什么不是公有的*/ class Srpopmenu
extends JFrame implements ActionListener, MouseListener { //此类本身实现了动作和鼠标事件监听器接口 //序列化版本ID,如果不使用序列化和反序列化那这个不是必须的
private static final long serialVersionUID = 2262184115394670248L; private JTextArea srm = new JTextArea();
private JPopupMenu pm = new JPopupMenu();
private JMenuItem item1 = new JMenuItem("复制");
private JMenuItem item2 = new JMenuItem("剪切");
private JMenuItem item3 = new JMenuItem("粘贴"); public Srpopmenu() {
setTitle("弹出式菜单");
setSize(300, 200);
setLocationRelativeTo(null); // ?
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // ?
add(srm);
srm.add(pm);
pm.add(item1);
pm.add(item2);
pm.add(item3);
//当你的这个构造方法执行时已经接近创建 Srpopmenu 对象的尾声了,而这个 Srpopmenu 对象
//自己已经实现了 ActionListener, MouseListener 这两个接口,提供了处理这两类事件的能力
//所以可以将自身的引用作为事件监听器添加给本窗口自己。
item1.addActionListener(this);
item2.addActionListener(this);
item3.addActionListener(this);
srm.addMouseListener(this);
setVisible(true);
} public void actionPerformed(ActionEvent e) {
System.out.println(((JMenuItem)e.getSource()).getText());
} public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
//获取鼠标键被放开时鼠标指针在产生此事件的组件(也叫事件源)上的XY坐标
pm.show(srm, e.getX(), e.getY());
}
} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public static void main(String args[]) {
new Srpopmenu();
}}