当前页面: 开发资料首页 → J2SE 专题 → 帮我看一下这段代码 右键怎么失灵了
帮我看一下这段代码 右键怎么失灵了
摘要: 帮我看一下这段代码 右键怎么失灵了
代码如下(刚开始编代码,可读性很差,望谅解)
package PersonalFinaceSystem;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
import java.text.*;
import java.io.*;
public class PersonalFinaceSystem extends JFrame implements ActionListener,
ItemListener {
//创建控制面板
private JPanel mypanel = new JPanel();
//创建标签面板
private JPanel statusBar = new JPanel();
//界面按键
private JButton btnew, btmyac, btexit;
//创建标签
private JLabel author, welcome;
//右键菜单
private JPopupMenu mypop = new JPopupMenu();
//右键菜单项
private JMenuItem newacc, myac, exits;
//获取当前时间
private java.util.Date currDate = new java.util.Date();
private SimpleDateFormat sdf = new SimpleDateFormat(-#34;yyyy MM dd-#34;,
Locale.getDefault());
private String d = sdf.format(currDate);
// 构造函数
public PersonalFinaceSystem() {
//窗口名
super(-#34;PersonalFinaceSystem-#34;);
//创建界面按钮
btnew = new JButton(-#34;NEW ACCOUNT-#34;);
btnew.addActionListener(this);
btnew.setForeground(Color.blue);
btnew.setToolTipText(-#34;创建新账户-#34;);
btmyac = new JButton(-#34;MY ACCOUNT-#34;);
btmyac.setForeground(Color.blue);
btmyac.setToolTipText(-#34;我的账户-#34;);
btexit = new JButton(-#34;EXIT SYSTEM-#34;);
btexit.setForeground(Color.blue);
btexit.setToolTipText(-#34;退出系统-#34;);
//设置布局管理器
mypanel.setLayout(new FlowLayout(FlowLayout.CENTER, 200, 80));
//将按钮加入面板
mypanel.add(btnew);
mypanel.add(btmyac);
mypanel.add(btexit);
//控制面板提示
mypanel.setToolTipText(-#34;Welcome to the PersonalFianceSystem-#34;);
//创建标签
author = new JLabel(-#34; -#34; + -#34;XI-#39;AN.ETU.CES@copyright-#34;, JLabel.LEFT);
author.setForeground(Color.black);
welcome = new JLabel(-#34;Welcome Today is -#34; + d + -#34; -#34;, JLabel.RIGHT);
welcome.setForeground(Color.black);
statusBar.setLayout(new BorderLayout());
statusBar.add(author, BorderLayout.WEST);
statusBar.add(welcome, BorderLayout.EAST);
//创建右键菜单项
newacc = new JMenuItem(-#34;New Account-#34;);
newacc.addActionListener(this);
myac = new JMenuItem(-#34;MY ACCOUNT-#34;);
myac.addActionListener(this);
exits = new JMenuItem(-#34;EXIT-#34;);
exits.addActionListener(this);
//创建右键菜单
mypop.add(newacc);
mypop.addSeparator();
mypop.add(myac);
mypop.addSeparator();
mypop.add(exits);
//右键菜单响应
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
checkMouseTrigger(me);
}
public void mouseReleased(MouseEvent me) {
checkMouseTrigger(me);
}
private void checkMouseTrigger(MouseEvent me) {
if (me.isPopupTrigger()) {
mypop.show(me.getComponent(), me.getX(), me.getY());
}
}
}
);
mypanel.add(mypop);
//加入当前面板
getContentPane().add(mypanel, BorderLayout.CENTER);
getContentPane().add(statusBar, BorderLayout.SOUTH);
//窗口最小化图标
setIconImage(getToolkit().getImage(-#34;Images/PersonalFinaceSystem.gif-#34;));
//窗口大小
setSize(400, 400);
//窗口出现的位置
setLocation(200, 300);
//窗口关闭事件处理
addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent we) {
quitApp();
}
}
);
setVisible(true);
}
//退出处理函数
private void quitApp() {
try {
int reply = JOptionPane.showConfirmDialog(this,
-#34;Are you really want to exit/nFrom PersonalFianceSystem?-#34;,
-#34;PersonalFianceSystem - Exit-#34;,
JOptionPane.YES_NO_OPTION,
JOptionPane.PLAIN_MESSAGE);
if (reply == JOptionPane.YES_OPTION) {
setVisible(false);
dispose();
System.out.println(-#34;Thanks for Using BankSystem-#34;);
System.exit(0);
} else if (reply == JOptionPane.NO_OPTION) {
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
}
}
catch (Exception e) {}
}
//加入图象
//事件处理方法
public void actionPerformed(ActionEvent ae) {
Object obj = ae.getSource();
if (obj == btnew) {
}
}
public void itemStateChanged(ItemEvent e) {
}
//主函数
public static void main(String[] args) {
PersonalFinaceSystem main = new PersonalFinaceSystem();
}
}
问题是右键无法在mypanel里显示,只能在statusBar显示
你可以试试把mypanel里同样注册一个事件
mypanel.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent me) {
checkMouseTrigger(me);
}
public void mouseReleased(MouseEvent me) {
checkMouseTrigger(me);
}
private void checkMouseTrigger(MouseEvent me) {
if (me.isPopupTrigger()) {
mypop.show(me.getComponent(), me.getX(), me.getY());
}
}
}
);