发现java的Bug!

redjava 2004-12-26 06:51:04
发现JMenu有一些事件不能响应!
不能响应focusGained,mouseEntered等事件!但可以响应enuSelected,mouseMoved等事件!
欢迎大家讨论!
...全文
763 45 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
呵呵,补充呵两句JMenuItem 实现了FocusListener而且是private 的JMenu没有实现它,如果你想在JMenu里的FocusListener起作用可以继承一下JMenu
liaowuyin 2005-02-06
  • 打赏
  • 举报
回复
建议楼主看看类的源文件
redjava 2005-01-19
  • 打赏
  • 举报
回复
Jbuilder 6实例入门中有用JMenu 的focusGained事件来实现动态禁用JMenuItem的代码,发现没有
focusGained没有发生作用!
cuilichen 2005-01-17
  • 打赏
  • 举报
回复
问一下楼主,JMenu 的mouseEntered事件会存在吗?
“bug”不是那么好找的,虚心学习吧......
cuilichen 2005-01-17
  • 打赏
  • 举报
回复
是啊,初学者总能发现“bug”,真牛。
jinjazz 2005-01-17
  • 打赏
  • 举报
回复
一般初学者总能发现"bug",嘿嘿
VincentSailing 2005-01-17
  • 打赏
  • 举报
回复
呵呵,也是怀疑程序的问题。
不同的类的对象,要用不同的方法对待!
bbn9435 2005-01-17
  • 打赏
  • 举报
回复
ty
htt80 2005-01-15
  • 打赏
  • 举报
回复
讨论才能出结果啊!UP
yzyronin 2005-01-14
  • 打赏
  • 举报
回复
up
redjava 2005-01-14
  • 打赏
  • 举报
回复
请 mrwest(James West) 看清楚!
我是说的JMenu!
而你是用的JMenuItem!
这是两个不同的东西!
lsrj 2005-01-13
  • 打赏
  • 举报
回复
up!
mrwest 2005-01-13
  • 打赏
  • 举报
回复
import java.awt.event.*;

import javax.swing.*;

public class E_MenuBar extends JMenuBar implements ActionListener {
private ExamFrame owner;
private JMenu mnuFunction, mnuConfiguration, mnuHelp;
private JMenuItem miF_OpenEP, miF_StartExam, miF_SubmitEP, miF_Exit, miC_Configuration, miC_SetPassword,
miH_HelpC, miH_About;

public static E_ConfigDialog configDialog;

private ConfigPasswordDialog configPasswordDialog;
private SetCP setPasswordDialog;

public E_MenuBar(ExamFrame owner) {
this.owner = owner;
//*****************************************************************
mnuFunction = new JMenu("功能");
mnuConfiguration = new JMenu("配置");
mnuHelp = new JMenu("帮助");

miF_OpenEP = new JMenuItem("打开考卷...", new ImageIcon("openss.bic"));
miF_StartExam = new JMenuItem("开始考试", new ImageIcon("startss.bic"));
miF_SubmitEP = new JMenuItem("提交考卷", new ImageIcon("submitEPss.bic"));
miF_Exit = new JMenuItem("退出", new ImageIcon("exitss.bic"));

miC_Configuration = new JMenuItem("配置...", new ImageIcon("configss.bic"));
miC_SetPassword = new JMenuItem("设定管理密码...");

miH_HelpC = new JMenuItem("帮助主题", new ImageIcon("helpss.bic"));
miH_About = new JMenuItem("关于...");

configDialog = new E_ConfigDialog();
configPasswordDialog = new ConfigPasswordDialog(owner);
setPasswordDialog = new SetCP(owner, configPasswordDialog);
//*****************************************************************
miF_OpenEP.setToolTipText(ExamFrame.TTT_MB_LOAD_TQ);
miF_StartExam.setToolTipText(ExamFrame.TTT_START_EXAM);
miF_SubmitEP.setToolTipText(ExamFrame.TTT_SUBMIT_EXAMINATION_PAPER);
miF_Exit.setToolTipText(ExamFrame.TTT_MB_EXIT);
miC_Configuration.setToolTipText(ExamFrame.TTT_MB_CONFIG);
miC_SetPassword.setToolTipText(ExamFrame.TTT_MB_SET_PASSWORD);
miH_HelpC.setToolTipText(ExamFrame.TTT_MB_HELP_CONTENTS);
miH_About.setToolTipText(ExamFrame.TTT_MB_ABOUT);

miF_StartExam.setEnabled(false);
miF_SubmitEP.setEnabled(false);
//*****************************************************************
mnuFunction.add(miF_OpenEP);
mnuFunction.addSeparator();
mnuFunction.add(miF_StartExam);
mnuFunction.add(miF_SubmitEP);
mnuFunction.addSeparator();
mnuFunction.add(miF_Exit);

mnuConfiguration.add(miC_Configuration);
mnuConfiguration.addSeparator();
mnuConfiguration.add(miC_SetPassword);

mnuHelp.add(miH_HelpC);
mnuHelp.addSeparator();
mnuHelp.add(miH_About);

add(mnuFunction); add(mnuConfiguration); add(mnuHelp);
//*****************************************************************
miF_OpenEP.addActionListener(this);
miF_StartExam.addActionListener(this);
miF_SubmitEP.addActionListener(this);
miF_Exit.addActionListener(this);
miC_Configuration.addActionListener(this);
miC_SetPassword.addActionListener(this);
miH_HelpC.addActionListener(this);
miH_About.addActionListener(this);

miF_OpenEP.addMouseListener(new MouseProcessor());
miF_StartExam.addMouseListener(new MouseProcessor());
miF_SubmitEP.addMouseListener(new MouseProcessor());
miF_Exit.addMouseListener(new MouseProcessor());
miC_Configuration.addMouseListener(new MouseProcessor());
miC_SetPassword.addMouseListener(new MouseProcessor());
miH_HelpC.addMouseListener(new MouseProcessor());
miH_About.addMouseListener(new MouseProcessor());
}

public void setEPLoaded(boolean b) {
miF_StartExam.setEnabled(b);
miF_SubmitEP.setEnabled(!b);
}

public void setExamStarted(boolean b) {
miF_StartExam.setEnabled(!b);
miF_SubmitEP.setEnabled(b);
configDialog.setExamStarted(b);
}

public void setExamOver(boolean b) {
miF_StartExam.setEnabled(!b);
miF_SubmitEP.setEnabled(!b);
configDialog.setExamStarted(!b);
}

private class MouseProcessor extends MouseAdapter {
public void mouseEntered(MouseEvent e) {
if(e.getSource().equals(miF_OpenEP)) {
owner.setStatusBarText(ExamFrame.TTT_MB_LOAD_TQ);
} else if(e.getSource().equals(miF_StartExam)) {
owner.setStatusBarText(ExamFrame.TTT_START_EXAM);
} else if(e.getSource().equals(miF_SubmitEP)) {
owner.setStatusBarText(ExamFrame.TTT_SUBMIT_EXAMINATION_PAPER);
} else if(e.getSource().equals(miF_Exit)) {
owner.setStatusBarText(ExamFrame.TTT_MB_EXIT);
} else if(e.getSource().equals(miC_Configuration)) {
owner.setStatusBarText(ExamFrame.TTT_MB_CONFIG);
} else if(e.getSource().equals(miC_SetPassword)) {
owner.setStatusBarText(ExamFrame.TTT_MB_SET_PASSWORD);
} else if(e.getSource().equals(miH_HelpC)) {
owner.setStatusBarText(ExamFrame.TTT_MB_HELP_CONTENTS);
} else if(e.getSource().equals(miH_About)) {
owner.setStatusBarText(ExamFrame.TTT_MB_ABOUT);
}
}

public void mouseExited(MouseEvent e) {
owner.setStatusBarText("");
}
}

public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(miF_OpenEP)) {
owner.openEP();
} else if(e.getSource().equals(miF_StartExam)) {
owner.setExamStarted(true);
} else if(e.getSource().equals(miF_SubmitEP)) {
owner.setExamOver(true);
} else if(e.getSource().equals(miF_Exit)) {
System.exit(0);
} else if(e.getSource().equals(miC_Configuration)) {
configPasswordDialog.setVisible(true);
} else if(e.getSource().equals(miC_SetPassword)) {
setPasswordDialog.setVisible(true);
} else if(e.getSource().equals(miH_HelpC)) {
JOptionPane.showMessageDialog(new JButton("OK"), "制作中……,谢谢使用!");
} else if(e.getSource().equals(miH_About)) {
JOptionPane.showMessageDialog(new JButton("OK"), "模拟考试系统 模拟考试程序 " + ExamFrame.VERSION
+ "");
}
}
}

上上星期刚用到,绝对没问题。
redjava 2005-01-12
  • 打赏
  • 举报
回复
不能响应focusGained,mouseEntered等事件!
上面的是测试focusGained的,mouseEntered也试过,没响应!
mrwest 2005-01-11
  • 打赏
  • 举报
回复
这跟mouseEntered()有关么?
redjava 2005-01-10
  • 打赏
  • 举报
回复
上面是源代码!
void jMenuFile_focusGained(FocusEvent e) {
System.exit(0);
}
没有得到执行
redjava 2005-01-09
  • 打赏
  • 举报
回复
package javamediaplayer;

import javax.swing.UIManager;
import java.awt.*;
public class MediaApp {
boolean packFrame = false;

//Construct the application
public MediaApp() {
MediaFrame frame = new MediaFrame();
//Validate frames that have preset sizes
//Pack frames that have useful preferred size info, e.g. from their layout
if (packFrame) {
frame.pack();
}
else {
frame.validate();
}
//Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
frame.setVisible(true);
}

//Main method
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
new MediaApp();
}
}


package javamediaplayer;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class MediaFrame extends JFrame {
JPanel contentPane;
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenuFile = new JMenu();
JMenuItem jMenuFileExit = new JMenuItem();
JMenu jMenuHelp = new JMenu();
JMenuItem jMenuHelpAbout = new JMenuItem();
JLabel statusBar = new JLabel();
BorderLayout borderLayout1 = new BorderLayout();

//Construct the frame
public MediaFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}

//Component initialization
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(400, 300));
this.setTitle("Frame Title");
statusBar.setText(" ");
jMenuFile.setText("File");
jMenuFile.addFocusListener(new MediaFrame_jMenuFile_focusAdapter(this));
jMenuFileExit.setText("Exit");
jMenuFileExit.addActionListener(new MediaFrame_jMenuFileExit_ActionAdapter(this));
jMenuHelp.setText("Help");
jMenuHelpAbout.setText("About");
jMenuHelpAbout.addActionListener(new MediaFrame_jMenuHelpAbout_ActionAdapter(this));
jMenuFile.add(jMenuFileExit);
jMenuHelp.add(jMenuHelpAbout);
jMenuBar1.add(jMenuFile);
jMenuBar1.add(jMenuHelp);
this.setJMenuBar(jMenuBar1);
contentPane.add(statusBar, BorderLayout.SOUTH);
}

//File | Exit action performed
public void jMenuFileExit_actionPerformed(ActionEvent e) {
System.exit(0);
}

//Help | About action performed
public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
}

//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
jMenuFileExit_actionPerformed(null);
}
}

void jMenuFile_focusGained(FocusEvent e) {
System.exit(0);
}
}

class MediaFrame_jMenuFileExit_ActionAdapter implements ActionListener {
MediaFrame adaptee;

MediaFrame_jMenuFileExit_ActionAdapter(MediaFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuFileExit_actionPerformed(e);
}
}

class MediaFrame_jMenuHelpAbout_ActionAdapter implements ActionListener {
MediaFrame adaptee;

MediaFrame_jMenuHelpAbout_ActionAdapter(MediaFrame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jMenuHelpAbout_actionPerformed(e);
}
}

class MediaFrame_jMenuFile_focusAdapter extends java.awt.event.FocusAdapter {
MediaFrame adaptee;

MediaFrame_jMenuFile_focusAdapter(MediaFrame adaptee) {
this.adaptee = adaptee;
}
public void focusGained(FocusEvent e) {
adaptee.jMenuFile_focusGained(e);
}
}
yleiou 2005-01-05
  • 打赏
  • 举报
回复
此BUG非彼BUG也

是非难辨
ahooyn 2005-01-05
  • 打赏
  • 举报
回复
我怀疑是类的定义和选取有问题
mrwest 2005-01-05
  • 打赏
  • 举报
回复
那不废话,我要是上个星期没用过,我闲着没事跟你叫什么真啊?说过了我上个星期刚刚用过了,前天看你帖子的时候我又把自己的代码翻出来验证了一下,真真的连个虫毛也没看到,上哪捉虫去?明明可以用,你偏要抬杠,你是不是没给Menu注册鼠标监听啊?
加载更多回复(25)

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧