java 如何编写JFrame窗体右上角红色打叉关闭按钮的事件?

java 如何编写JFrame窗体右上角红色打叉关闭按钮的事件?,第1张

关闭时释放资源的调用

setDefaultCloseOperation

public void setDefaultCloseOperation(int operation)设置用户在此窗体上发起 "close" 时默认执行的 *** 作。必须指定以下选项之一:

DO_NOTHING_ON_CLOSE(在 WindowConstants 中定义):不执行任何 *** 作;要求程序在已注册的 WindowListener 对象的 windowClosing 方法中处理该 *** 作。

HIDE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册的 WindowListener 对象后自动隐藏该窗体。

DISPOSE_ON_CLOSE(在 WindowConstants 中定义):调用任意已注册 WindowListener 的对象后自动隐藏并释放该窗体。

EXIT_ON_CLOSE(在 JFrame 中定义):使用 System exit 方法退出应用程序。仅在应用程序中使用。

默认情况下,该值被设置为 HIDE_ON_CLOSE。更改此属性的值将导致激发属性更改事件,其属性名称为 "defaultCloseOperation"。

注:当 Java 虚拟机 (VM) 中最后一个可显示窗口被释放后,虚拟机可能会终止。有关更多信息,请参阅 AWT Threading Issues。

关闭窗口时触发的窗口事件:

JFrame对象.addWindowListener(new java.awt.event.WindowAdapter() {

public void windowClosing(java.awt.event.WindowEvent e) {

System.out.println("windowClosing()")//要处理的事件 }

})

效果图

参考代码和注释如下

import java.awt.event.*

import javax.swing.*

public class DemoFrame extends JFrame{

JButton jbExit

public DemoFrame() {

jbExit = new JButton("退出")

//当点击退出 按钮时候的响应器

jbExit.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

doExit()//退出时候的方法

}

})

JPanel jp = new JPanel()

jp.add(jbExit)

add(jp)

setTitle("窗口")// 窗口标题

setSize(380, 185)// 窗口大小

setLocationRelativeTo(null)// 窗口居中

//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)//通常添加这行代码,点击窗口右下角的关闭时会结束程序

setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE)//右下角的关闭,不主动采取任何行动

//当点击窗口右上角的关闭按钮时候的响应器

addWindowListener(new WindowAdapter() {

@Override

public void windowClosing(WindowEvent e) {

doExit()

}

})

}

// main方法

public static void main(String[] args) {

new DemoFrame().setVisible(true)

}

//退出时候的选择

private void doExit() {

int n = JOptionPane.showConfirmDialog(null, "你确定要退出吗?", "消息提示",JOptionPane.YES_NO_OPTION)

//取消选择是 -1 ,确定是0 ,取消是1

System.out.println(n)

if(n==0) { //如果选择了确定

System.exit(0)//那么退出

}

}

}

//设置关闭后直接退出

setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE) package Login

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.awt.event.MouseAdapter

import java.awt.event.MouseEvent

import java.net.URL

import javax.swing.ComboBoxModel

import javax.swing.DefaultComboBoxModel

import javax.swing.JLabel

import javax.swing.JPasswordField

import javax.swing.JRadioButton

import javax.swing.JTextField

import javax.swing.ImageIcon

import javax.swing.JButton

import javax.swing.JComboBox

import javax.swing.JOptionPane

import javax.swing.WindowConstants

import javax.swing.SwingUtilities

/**

* This code was edited or generated using CloudGarden's Jigloo

* SWT/Swing GUI Builder, which is free for non-commercial

* use. If Jigloo is being used commercially (ie, by a corporation,

* company or business for any purpose whatever) then you

* should purchase a license for each developer using Jigloo.

* Please visit 

* Use of Jigloo implies acceptance of these licensing terms.

* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR

* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED

* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.

*/

public class NewJFrame extends javax.swing.JFrame {

private JLabel jLabel_School_logo

private JLabel jLabel_user_name

private JLabel jLabel_passwd

private JButton jButton_reg

private JButton jButton_login

private JPasswordField jPasswordField

private JTextField jTextField_user_name

private JLabel jLabel_title

private int student_statue=0

private JComboBox jComboBox1

private int manager_statue=0

/**

 * 

 */

/**

 * 

 */

/**

* Auto-generated main method to display this JFrame

*/

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

public void run() {

NewJFrame inst = new NewJFrame()

inst.setTitle("教室管理系统登录")

inst.setLocationRelativeTo(null)

inst.setVisible(true)

}

})

}

public NewJFrame() {

super()

initGUI()

}

private void initGUI() {

try {

setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)

getContentPane().setLayout(null)

{

jLabel_School_logo = new JLabel()

getContentPane().add(jLabel_School_logo)

jLabel_School_logo.setBounds(0, 0, 86, 84)

ImageIcon logo=new ImageIcon("img/log.jpg")

jLabel_School_logo.setIcon(logo)

}

{

jLabel_title = new JLabel()

getContentPane().add(jLabel_title)

jLabel_title.setBounds(86, 0, 447, 84)

ImageIcon title=new ImageIcon("img/title.jpg")

jLabel_title.setIcon(title)

}

{

jLabel_user_name = new JLabel()

getContentPane().add(jLabel_user_name)

jLabel_user_name.setText("\u5b66\u53f7\uff1a")

jLabel_user_name.setBounds(155, 131, 51, 31)

jLabel_user_name.setFont(new java.awt.Font("叶根友毛笔行书2.0版",0,12))

}

{

jTextField_user_name = new JTextField()

getContentPane().add(jTextField_user_name)

jTextField_user_name.setBounds(199, 135, 151, 23)

}

{

jLabel_passwd = new JLabel()

getContentPane().add(jLabel_passwd)

jLabel_passwd.setText("\u5bc6\u7801\uff1a")

jLabel_passwd.setBounds(152, 185, 51, 31)

jLabel_passwd.setFont(new java.awt.Font("叶根友毛笔行书2.0版",0,12))

}

{

jPasswordField = new JPasswordField()

getContentPane().add(jPasswordField)

jPasswordField.setBounds(199, 189, 151, 23)

}

{

jButton_login = new JButton()

getContentPane().add(jButton_login)

jButton_login.setText("\u767b\u5f55")

jButton_login.setBounds(199, 235, 68, 23)

jButton_login.setFont(new java.awt.Font("叶根友毛笔行书2.0版",0,12))

}

{

jButton_reg = new JButton()

getContentPane().add(jButton_reg)

jButton_reg.setText("\u6ce8\u518c")

jButton_reg.setBounds(282, 235, 68, 23)

jButton_reg.setFont(new java.awt.Font("叶根友毛笔行书2.0版",0,12))

jButton_reg.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent evt) {

jButton_regMouseClicked(evt)

}

})

}

{

ComboBoxModel jComboBox1Model = 

new DefaultComboBoxModel(

new String[] { "学生/老师登录", "管理员登录" })

jComboBox1 = new JComboBox()

getContentPane().add(jComboBox1)

jComboBox1.setModel(jComboBox1Model)

jComboBox1.setBounds(199, 90, 152, 23)

jComboBox1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

jComboBox1ActionPerformed(evt)

}

})

}

pack()

this.setSize(549, 334)

} catch (Exception e) {

    //add your error handling code here

e.printStackTrace()

}

}

private void jComboBox1ActionPerformed(ActionEvent evt) {

if(jComboBox1.getSelectedIndex()==0)

{

jLabel_user_name.setText("学号:")

}

else

{

jLabel_user_name.setText("帐号:")

}

}

private void jButton_regMouseClicked(MouseEvent evt) {

if(jComboBox1.getSelectedIndex()==1)

{

JOptionPane.showMessageDialog(NewJFrame.this, "管理员帐号不提供注册!", "", JOptionPane.DEFAULT_OPTION)

}

else

{

reg register=new reg()

register.setTitle("注册")

register.setLocationRelativeTo(this)

register.setVisible(true)

}

}

}

//设置setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)在另一个方法,你怎么用到你这个F呢?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11725307.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存