Java程序求DeBug
答案:3 悬赏:0 手机版
解决时间 2021-01-22 12:43
- 提问者网友:玫瑰园
- 2021-01-21 22:45
Java程序求DeBug
最佳答案
- 五星知识达人网友:蓝房子
- 2021-01-21 23:28
拿去运行下
package test;
import javax.swing.*;
import java.awt.event.*;
public class JPMenu extends JFrame {
JMenuItem reMenu, copyMenu, pasteMenu, cutMenu, delMenu, allMenu;
JPopupMenu jpm;
public JPMenu() {
jpm = new JPopupMenu();
reMenu = new JMenuItem("撤销");
copyMenu = new JMenuItem("复制");
pasteMenu = new JMenuItem("粘贴");
cutMenu = new JMenuItem("剪切");
delMenu = new JMenuItem("删除");
allMenu = new JMenuItem("全选");
jpm.add(reMenu);
jpm.addSeparator();
jpm.add(copyMenu);
jpm.add(pasteMenu);
jpm.add(cutMenu);
jpm.add(delMenu);
jpm.add(allMenu);
MouseListener pl = new PopupListener(jpm);
this.addMouseListener(pl);
this.setTitle("JPopupMenuDemo");
this.setBounds(100, 100, 300, 200);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[]) {
new JPMenu();
}
class PopupListener extends MouseAdapter {
JPopupMenu pm;
PopupListener(JPopupMenu pm1) {
this.pm = pm1;
}
public void mousePressed(MouseEvent e) {
showPopupMenu(e);
}
public void mouseRealeased(MouseEvent e) {
showPopupMenu(e);
}
private void showPopupMenu(MouseEvent e) {
//if (e.isPopupTrigger()) { 判断是否要求弹出一个菜单,在这里是不符合这个判断的
pm.show(e.getComponent(), e.getX(), e.getY());
//}
}
}
}追问不是判断MouseEvent的么?追答直接用getButton() 这个函数就行,如果它的返回值是MouseEvent.BUTTON3,那就是右键;如果它的返回值是MouseEvent.BUTTON2,那就是中键;如果它的返回值是MouseEvent.BUTTON1,那就是左键。
class PopupListener extends MouseAdapter {
JPopupMenu pm;
PopupListener(JPopupMenu pm1) {
this.pm = pm1;
}
public void mousePressed(MouseEvent e) {
if(e.getButton() == 3){
showPopupMenu(e);
}
}
public void mouseRealeased(MouseEvent e) {
showPopupMenu(e);
}
private void showPopupMenu(MouseEvent e) {
//if (e.isPopupTrigger()) { 判断是否要求弹出一个菜单,在这里是不符合这个判断的
pm.show(e.getComponent(), e.getX(), e.getY());
//}
}
}
这样才是真正的右键出菜单
package test;
import javax.swing.*;
import java.awt.event.*;
public class JPMenu extends JFrame {
JMenuItem reMenu, copyMenu, pasteMenu, cutMenu, delMenu, allMenu;
JPopupMenu jpm;
public JPMenu() {
jpm = new JPopupMenu();
reMenu = new JMenuItem("撤销");
copyMenu = new JMenuItem("复制");
pasteMenu = new JMenuItem("粘贴");
cutMenu = new JMenuItem("剪切");
delMenu = new JMenuItem("删除");
allMenu = new JMenuItem("全选");
jpm.add(reMenu);
jpm.addSeparator();
jpm.add(copyMenu);
jpm.add(pasteMenu);
jpm.add(cutMenu);
jpm.add(delMenu);
jpm.add(allMenu);
MouseListener pl = new PopupListener(jpm);
this.addMouseListener(pl);
this.setTitle("JPopupMenuDemo");
this.setBounds(100, 100, 300, 200);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String args[]) {
new JPMenu();
}
class PopupListener extends MouseAdapter {
JPopupMenu pm;
PopupListener(JPopupMenu pm1) {
this.pm = pm1;
}
public void mousePressed(MouseEvent e) {
showPopupMenu(e);
}
public void mouseRealeased(MouseEvent e) {
showPopupMenu(e);
}
private void showPopupMenu(MouseEvent e) {
//if (e.isPopupTrigger()) { 判断是否要求弹出一个菜单,在这里是不符合这个判断的
pm.show(e.getComponent(), e.getX(), e.getY());
//}
}
}
}追问不是判断MouseEvent的么?追答直接用getButton() 这个函数就行,如果它的返回值是MouseEvent.BUTTON3,那就是右键;如果它的返回值是MouseEvent.BUTTON2,那就是中键;如果它的返回值是MouseEvent.BUTTON1,那就是左键。
class PopupListener extends MouseAdapter {
JPopupMenu pm;
PopupListener(JPopupMenu pm1) {
this.pm = pm1;
}
public void mousePressed(MouseEvent e) {
if(e.getButton() == 3){
showPopupMenu(e);
}
}
public void mouseRealeased(MouseEvent e) {
showPopupMenu(e);
}
private void showPopupMenu(MouseEvent e) {
//if (e.isPopupTrigger()) { 判断是否要求弹出一个菜单,在这里是不符合这个判断的
pm.show(e.getComponent(), e.getX(), e.getY());
//}
}
}
这样才是真正的右键出菜单
全部回答
- 1楼网友:孤独的牧羊人
- 2021-01-22 01:54
啊啊
- 2楼网友:鱼芗
- 2021-01-22 00:34
private void showPopupMenu(MouseEvent e){
if(e.isPopupTrigger()){
pm.show(e.getComponent(),e.getX(),e.getY());
}
}
把这个if判断去掉追问不是判断MouseEvent的么?追答你只定义了鼠标事件,不需要判断
if(e.isPopupTrigger()){
pm.show(e.getComponent(),e.getX(),e.getY());
}
}
把这个if判断去掉追问不是判断MouseEvent的么?追答你只定义了鼠标事件,不需要判断
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯