这是本人编的一个程序 有一个问题就是按界面上的按钮"EXIT SYSTEM"没有响应(按照我的设计应该有个退出对话框) 但点右键里的"EXIT SYSTEM"却很正常。不知道我说清楚了没。
程序没有问题 可以直接运行
package personalfiancesystem;/********引进java类库**********/
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.text.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.io.*;
import javax.swing.plaf.metal.*;
import java.awt.PrintJob.*;
/************引进工程文件*******************/
import personalfiancesystem.NewAccount;public class PersonalFianceSystem extends JFrame implements ActionListener,
ItemListener {
/************变量声明****************/
//创建面板
private JPanel menupanel = new JPanel();
private JPanel statuspanel = new JPanel();
//虚拟桌面
JDesktopPane mydesk = new JDesktopPane();
//界面按钮
private JButton btnew, btmyac, btexit;
//右键菜单
private JPopupMenu mypop = new JPopupMenu();
//右键菜单项
private JMenuItem minew, mimyac, miexit;
//标签
private JLabel author, timedate;
//获取时间与日期
private java.util.Date currdate = new Date();
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd号HH时mm分",
Locale.getDefault());
private String d = sdf.format(currdate);
/**********构造函数************/
public PersonalFianceSystem() {
//窗口名称
super("PersonalFianceSystem");
//窗口大小
setSize(400, 400);
//窗口出现位置
setLocation(0, 0);
//窗口退出
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
quitapp();
}
}
);
//面板布局
mydesk.putClientProperty ("JDesktopPane.dragMode", "outline");
getContentPane().add(menupanel, new BorderLayout().NORTH);
getContentPane().add(mydesk, new BorderLayout().CENTER);
getContentPane().add(statuspanel, new BorderLayout().SOUTH); //添加按钮
JButton btnew = new JButton("NEW ACCOUNT");
btnew.setToolTipText("创建账户");
btnew.addActionListener(this); JButton btmyac = new JButton("MY ACCOUNT");
btmyac.setToolTipText("我的账户");
btmyac.addActionListener(this); JButton btexit = new JButton("EXIT SYSTEM");
btexit.setToolTipText("退出系统");
btexit.addActionListener(this);
menupanel.setLayout(new FlowLayout());
menupanel.add(btnew);
menupanel.add(btmyac);
menupanel.add(btexit);
//添加标签
JLabel author = new JLabel("XI'AN.ETU.CES@copyright");
JLabel timedate = new JLabel("" + d);
timedate.setToolTipText("当前时间与日期");
statuspanel.setLayout(new BorderLayout());
statuspanel.add(author, BorderLayout.WEST);
statuspanel.add(timedate, BorderLayout.EAST);
//创建右键菜单项
minew = new JMenuItem("CREAT MY ACCOUNT");
minew.addActionListener(this);
mimyac = new JMenuItem("MY ACCOUNT");
mimyac.addActionListener(this);
miexit = new JMenuItem("EXIT SYSTEM");
miexit.addActionListener(this)
;
//加入右键
mypop.add(minew);
mypop.addSeparator();
mypop.add(mimyac);
mypop.addSeparator();
mypop.add(miexit);
//右键响应
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());
}
}
}
);
//显示窗口
setVisible(true);
} //动作监听
public void actionPerformed(ActionEvent ae) {
Object obj = ae.getSource();
if (obj == miexit||obj==btexit) {
quitapp(); } else if (obj == btnew || obj == minew) {
NewAccount newAcc = new NewAccount();
mydesk.add(newAcc);
}
} public void itemStateChanged(ItemEvent ie) { }//退出处理函数
private void quitapp() {
try {
int reply = JOptionPane.showConfirmDialog(this,
" Are you sure to exit\n From PersonalFianceSystem?",
"PersonalFianceSystem - Exit",
JOptionPane.YES_NO_OPTION,
JOptionPane.PLAIN_MESSAGE
);
if (reply == JOptionPane.YES_OPTION) {
setVisible(false);
dispose();
System.exit(0); } else if (reply == JOptionPane.NO_OPTION) {
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); }
} catch (Exception ex) { } } /*********主函数**************/
public static void main(String[] args) {
PersonalFianceSystem main = new PersonalFianceSystem();
}
}
程序没有问题 可以直接运行
package personalfiancesystem;/********引进java类库**********/
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.text.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.io.*;
import javax.swing.plaf.metal.*;
import java.awt.PrintJob.*;
/************引进工程文件*******************/
import personalfiancesystem.NewAccount;public class PersonalFianceSystem extends JFrame implements ActionListener,
ItemListener {
/************变量声明****************/
//创建面板
private JPanel menupanel = new JPanel();
private JPanel statuspanel = new JPanel();
//虚拟桌面
JDesktopPane mydesk = new JDesktopPane();
//界面按钮
private JButton btnew, btmyac, btexit;
//右键菜单
private JPopupMenu mypop = new JPopupMenu();
//右键菜单项
private JMenuItem minew, mimyac, miexit;
//标签
private JLabel author, timedate;
//获取时间与日期
private java.util.Date currdate = new Date();
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd号HH时mm分",
Locale.getDefault());
private String d = sdf.format(currdate);
/**********构造函数************/
public PersonalFianceSystem() {
//窗口名称
super("PersonalFianceSystem");
//窗口大小
setSize(400, 400);
//窗口出现位置
setLocation(0, 0);
//窗口退出
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
quitapp();
}
}
);
//面板布局
mydesk.putClientProperty ("JDesktopPane.dragMode", "outline");
getContentPane().add(menupanel, new BorderLayout().NORTH);
getContentPane().add(mydesk, new BorderLayout().CENTER);
getContentPane().add(statuspanel, new BorderLayout().SOUTH); //添加按钮
JButton btnew = new JButton("NEW ACCOUNT");
btnew.setToolTipText("创建账户");
btnew.addActionListener(this); JButton btmyac = new JButton("MY ACCOUNT");
btmyac.setToolTipText("我的账户");
btmyac.addActionListener(this); JButton btexit = new JButton("EXIT SYSTEM");
btexit.setToolTipText("退出系统");
btexit.addActionListener(this);
menupanel.setLayout(new FlowLayout());
menupanel.add(btnew);
menupanel.add(btmyac);
menupanel.add(btexit);
//添加标签
JLabel author = new JLabel("XI'AN.ETU.CES@copyright");
JLabel timedate = new JLabel("" + d);
timedate.setToolTipText("当前时间与日期");
statuspanel.setLayout(new BorderLayout());
statuspanel.add(author, BorderLayout.WEST);
statuspanel.add(timedate, BorderLayout.EAST);
//创建右键菜单项
minew = new JMenuItem("CREAT MY ACCOUNT");
minew.addActionListener(this);
mimyac = new JMenuItem("MY ACCOUNT");
mimyac.addActionListener(this);
miexit = new JMenuItem("EXIT SYSTEM");
miexit.addActionListener(this)
;
//加入右键
mypop.add(minew);
mypop.addSeparator();
mypop.add(mimyac);
mypop.addSeparator();
mypop.add(miexit);
//右键响应
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());
}
}
}
);
//显示窗口
setVisible(true);
} //动作监听
public void actionPerformed(ActionEvent ae) {
Object obj = ae.getSource();
if (obj == miexit||obj==btexit) {
quitapp(); } else if (obj == btnew || obj == minew) {
NewAccount newAcc = new NewAccount();
mydesk.add(newAcc);
}
} public void itemStateChanged(ItemEvent ie) { }//退出处理函数
private void quitapp() {
try {
int reply = JOptionPane.showConfirmDialog(this,
" Are you sure to exit\n From PersonalFianceSystem?",
"PersonalFianceSystem - Exit",
JOptionPane.YES_NO_OPTION,
JOptionPane.PLAIN_MESSAGE
);
if (reply == JOptionPane.YES_OPTION) {
setVisible(false);
dispose();
System.exit(0); } else if (reply == JOptionPane.NO_OPTION) {
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); }
} catch (Exception ex) { } } /*********主函数**************/
public static void main(String[] args) {
PersonalFianceSystem main = new PersonalFianceSystem();
}
}
JButton btexit = new JButton("EXIT SYSTEM"); // 这里你又声明了一个btexit变量// 全局变量btexit没有被实例化,它还是null// 所以 if(obj == btexit)不可能成立// 将JButton btexit = new JButton("EXIT SYSTEM");改为btexit = new JButton("EXIT SYSTEM");就OK拉