以下是使用Swing编写一个窗口的示例,其中窗口的最大化和关闭按钮被禁用,并在菜单栏上实现了关闭功能:
package com.jcli.exit;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
以下是使用Swing编写一个窗口的示例,其中窗口的最大化和关闭按钮被禁用,并在菜单栏上实现了关闭功能:
*/
public class MainWindow extends JFrame {
public MainWindow() {
initialize();
}
private void initialize() {
setTitle("My Window");
setSize(400, 300);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // 禁用默认的关闭操作
setResizable(false);//不可放大
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
// 创建菜单
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
// 创建菜单项
JMenuItem exitMenuItem = new JMenuItem("Exit");
fileMenu.add(exitMenuItem);
// 为菜单项添加事件监听器
exitMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 执行关闭操作
closeWindow();
}
});
}
private void closeWindow() {
int option = JOptionPane.showConfirmDialog(this, "Are you sure you want to exit?", "Confirmation", JOptionPane.YES_NO_OPTION);
if (option == JOptionPane.YES_OPTION) {
// 关闭窗口
dispose();
System.exit(0);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
MainWindow window = new MainWindow();
window.setVisible(true);
}
});
}
}
在这个示例中,我们创建了一个名为MainWindow
的自定义JFrame
子类。在initialize()
方法中,我们设置了窗口的标题和大小,并禁用了默认的关闭操作。
然后,我们创建了一个菜单栏JMenuBar
,并将其设置为窗口的菜单栏。我们创建了一个名为"File"的菜单JMenu
,并将其添加到菜单栏中。
在菜单中,我们创建了一个菜单项JMenuItem
,标签为"Exit"。然后,我们为该菜单项添加了一个事件监听器,当用户选择"Exit"菜单项时,会执行监听器中的代码。
在事件监听器中,我们调用closeWindow()
方法来执行关闭操作。在closeWindow()
方法中,我们显示一个确认对话框JOptionPane
来询问用户是否确认关闭窗口。如果用户选择"Yes",我们调用dispose()
方法来关闭窗口并释放资源,并使用System.exit(0)
来终止程序。
最后,在main()
方法中,我们使用SwingUtilities.invokeLater()
方法来确保窗口在事件分派线程中创建和显示。
请注意,此示例仅演示了如何在菜单栏中实现关闭功能并禁用窗口的最大化和关闭按钮。您可以根据自己的需求进一步扩展窗口的功能和布局。