向高手请教。。。
请问我可以重写JFrame 窗体的 最大化, 最小化 和退出的按钮吗 ?
我想给退出的时候加个事件 !!
高手请教 最好有源代码
[解决办法]
可以。
调用 setUndecorated(true); 去掉自带的。
在右上角放置三个 JButton。
分别在点击时调用
setExtendedState(JFrame.ICONIFIED); // 最小
setExtendedState(JFrame.MAXIMIZED_BOTH); // 最大
dispose() or System.exit(0); //退出
[解决办法]
重画按钮?
还是自己写事件?
class Test extends JFrame { public Test() { this.addWindowListener(new WindowListener() { @Override public void windowActivated(WindowEvent arg0) { // TODO Auto-generated method stub } @Override public void windowClosed(WindowEvent arg0) { // TODO Auto-generated method stub } @Override public void windowClosing(WindowEvent arg0) { // TODO Auto-generated method stub } @Override public void windowDeactivated(WindowEvent arg0) { // TODO Auto-generated method stub } @Override public void windowDeiconified(WindowEvent arg0) { // TODO Auto-generated method stub } @Override public void windowIconified(WindowEvent arg0) { // TODO Auto-generated method stub } @Override public void windowOpened(WindowEvent arg0) { // TODO Auto-generated method stub } }); }}
[解决办法]
getContentPane().add(txtuser);
txtuser.setBounds(144, 103, 153, 22);
}
{
txtpassword = new JPasswordField();
getContentPane().add(txtpassword);
txtpassword.setBounds(144, 137, 153, 22);
}
{
btnOK = new JButton();
getContentPane().add(btnOK);
btnOK.setText("\u8fdb\u5165");
btnOK.setBounds(103, 178, 60, 22);
btnOK.addActionListener(this);
}
{
btnCanel = new JButton();
getContentPane().add(btnCanel);
btnCanel.setText("\u9000\u51fa");
btnCanel.setBounds(202, 178, 60, 22);
btnCanel.addActionListener(this);
}
pack();
this.setSize(400, 300);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Login inst = new Login();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(btnOK)){
//System.out.println("d2");
User user = new User();
user.setUsername(txtuser.getText());
char ps[] = txtpassword.getPassword();
String psd = new String(ps);
user.setPassword(psd);
UserDAO userdao = new UserDAO();
String flag = userdao.queryAllEmp(user);
if(flag.equals("YES")) {
System.out.println("登录成功");
CourseFrame inst = new CourseFrame();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
this.dispose();
}else{
JOptionPane.showMessageDialog(this, "用户名或密码不正确!!!");
txtpassword.setText("");
}
}else if(e.getSource().equals(btnCanel)) {
System.exit(0);
}
}
}
例子自己看去,
btnOK.addActionListener(this); 添加监听事件
e.getSoure()获得事件
自己研究去
至于最大最小,自己翻看API