因功能需求,现要在一个窗体的文本区中加入一个鼠标监听,实现这个功能,就是当你用鼠标在文本区中左击时,不做任何响应,而右击则出现来一系列类似菜单项的下拉列表,下拉列表中有剪切.复制等之类的菜单项,当选择其中一项时,又能响应相应的操作!请问各大侠这个功能用代码如何实现?先在这里谢谢各位大侠了!
解决方案 »
- 中文乱码.
- el表达式<tc:string code= 。。代表什么意思?
- JAVA C/S 结构的数据库问题
- java中读TXT文件以及筛选数据的问题!——信誉很好一定给分!
- 郁闷,java app不动了!真的是一动不动的!!!!
- String 转 InputStream,,紧急在线等带,谢谢!
- 怎样使APPLET+JAVABEAN开发代替APPLET+jdbc的方式
- 春节将至,大家来抢分吧!
- Spring jdbc 动态的将参数Insert 至对应的表栏位
- Java - No enclosing instance of type is accessible
- JBOSS绑定IP
- 又是面试题,供大家探讨研究
这个是我想要写一个播放器的时候其中一点代码。
/** getPlayerPanel() 方法你可以想象成你的文本区域
* getPMenu() 就是定义返回一个弹出菜单
*/
/**
* 返回Component,作为播放窗口
* @return Component
*/
private Component getPlayerPanel() {
// TODO Auto-generated method stub
if(playerpanel==null)
{
playerpanel=new PlayerPanel(new BorderLayout());
playerpanel.add(getPMenu());
playerpanel.setBackground(Color.BLACK);
playerpanel.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent evt) {
if (evt.getButton()==MouseEvent.BUTTON1) {//左键单击
if(player.getState()==Player.Started)
player.stop();
if(player.getState()!=Player.Started)
player.start();
}
/*if((evt.getModifiers()&InputEvent.BUTTON3_MASK)!=0)//右击,同下面的代码作用一样,都能实现弹出菜单的弹出。
{
getPMenu().show(evt.getComponent(), evt.getX(), evt.getY());
}*/
if (evt.getButton()==MouseEvent.BUTTON3) {//右击
getPMenu().show(evt.getComponent(), evt.getX(), evt.getY());
}
}
});//MouseListener.mouseClicked(MouseEvent.MOUSE_CLICKED)
}
return playerpanel;
}
/**
* 实现能够在组件中的指定位置动态弹出的菜单。
* @return PopupMenu
* */
private PopupMenu getPMenu()
{
if(pmenu==null)
{
pmenu=new PopupMenu("控制");
MenuItem pmplay=new MenuItem("播放");
MenuItem pmpause=new MenuItem("暂停");
MenuItem psilence=new MenuItem("静音");
pmenu.add(pmplay);
pmplay.addActionListener(this);
pmenu.add(pmpause);
pmpause.addActionListener(this);
pmenu.add(psilence);
psilence.addActionListener(this);
}
return pmenu;
}
第一个方法是一个播放
第二个方法是返回一个弹出菜单的方法
/**
* 返回Component,作为播放窗口
* @return Component
*/
private Component getPlayerPanel() {
// TODO Auto-generated method stub
if(playerpanel==null)
{
playerpanel=new PlayerPanel(new BorderLayout());
playerpanel.add(getPMenu());
playerpanel.setBackground(Color.BLACK);
playerpanel.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent evt) {
/*if((evt.getModifiers()&InputEvent.BUTTON3_MASK)!=0)//右击,同下面的代码作用一样,都能实现弹出菜单的弹出。
{
getPMenu().show(evt.getComponent(), evt.getX(), evt.getY());
}*/
if (evt.getButton()==MouseEvent.BUTTON3) {//右击
getPMenu().show(evt.getComponent(), evt.getX(), evt.getY());
}
}
});//MouseListener.mouseClicked(MouseEvent.MOUSE_CLICKED)
}
return playerpanel;
}
/**
* 实现能够在组件中的指定位置动态弹出的菜单。
* @return PopupMenu
* */
private PopupMenu getPMenu()
{
if(pmenu==null)
{
pmenu=new PopupMenu("控制");
MenuItem pmplay=new MenuItem("播放");
MenuItem pmpause=new MenuItem("暂停");
MenuItem psilence=new MenuItem("静音");
pmenu.add(pmplay);
pmplay.addActionListener(this);
pmenu.add(pmpause);
pmpause.addActionListener(this);
pmenu.add(psilence);
psilence.addActionListener(this);
}
return pmenu;
}
看看api,就会了~~~~~~
楼上这位大侠,要是用的是swing组件呢,那怎么办,里面没有PopupJMenu啥整呢?
不需要显示添加监听动作
这个就是讲复制黏贴的,就是你 要找的