📄 mainwindow.java
字号:
package GradeManagement;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import java.beans.PropertyVetoException;
import java.net.URL;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.MatteBorder;
public class MainWindow extends JFrame {
private static int WIDTH = 800;
private static int HEIGHT = 480;
private JMenuBar menuBar;
private JMenu fileMenu, helpMenu;
private JMenuItem saveMenuItem, saveAsMenuItem;
private Action newAction, openAction,
exitAction, aboutAction;
private JToolBar toolBar;
private JDesktopPane desktopPane;
private SplashScreen splashScreen;
public MainWindow() {
super( "学生成绩管理系统" );
URL url = MainWindow.class.getResource("images/icon.png");
ImageIcon icon = new ImageIcon( url );
setIconImage( icon.getImage() );
showSplashScreen(); //显示欢迎屏幕
setDefaultCloseOperation( WindowConstants.DO_NOTHING_ON_CLOSE );
desktopPane = new JDesktopPane(); // 创建JDesktopPane对象
//设置活动的拖曳方式
desktopPane.setDragMode( JDesktopPane.LIVE_DRAG_MODE );
url = MainWindow.class.getResource("images/new.gif");
Icon newIcon = new ImageIcon(url);
newAction = new AbstractGradeAction("New", newIcon,
"创建新的成绩簿", new Integer('N')) {
public void actionPerformed(ActionEvent event) {
createNewWindow();
}
};
url = MainWindow.class.getResource("images/open.gif");
Icon openIcon = new ImageIcon(url);
openAction = new AbstractGradeAction("Open", openIcon,
"打开成绩簿", new Integer('O')) {
public void actionPerformed(ActionEvent event) {
InternalWindow frame = createNewWindow();
if (!frame.openRoster())
frame.close();
}
};
url = MainWindow.class.getResource("images/exit.gif");
Icon exitIcon = new ImageIcon(url);
exitAction = new AbstractGradeAction("Exit", exitIcon,
"退出应用程序", new Integer('X')) {
public void actionPerformed(ActionEvent event) {
exitApplication();
}
};
url = MainWindow.class.getResource("images/about.gif");
Icon aboutIcon = new ImageIcon(url);
aboutAction = new AbstractGradeAction("About",
aboutIcon, "应用程序", new Integer('b')) {
public void actionPerformed(ActionEvent event) {
JOptionPane.showMessageDialog(MainWindow.this,
"学生成绩管理系统V1.0.\n 版权所有 " +
"清华大学计算机系" );
}
};
fileMenu = new JMenu("File");
fileMenu.setMnemonic('F');
helpMenu = new JMenu("Help");
helpMenu.setMnemonic('H');
fileMenu.add(newAction).setIcon(null);
fileMenu.add(openAction).setIcon(null);
saveMenuItem = new JMenuItem("Save");
saveAsMenuItem = new JMenuItem("Save As");
fileMenu.add(saveMenuItem);
fileMenu.add(saveAsMenuItem);
fileMenu.addSeparator();
fileMenu.add(exitAction).setIcon(null);
helpMenu.add(aboutAction).setIcon(null);
menuBar = new JMenuBar();
menuBar.add(fileMenu);
menuBar.add(helpMenu);
setJMenuBar(menuBar);
//创建工具条对象
toolBar = new JToolBar();
toolBar.setFloatable(false);
toolBar.add(newAction);
toolBar.add(openAction);
toolBar.addSeparator();
toolBar.add(exitAction);
toolBar.addSeparator();
toolBar.add(aboutAction);
getContentPane().add(toolBar, BorderLayout.NORTH);
getContentPane().add(desktopPane, BorderLayout.CENTER);
// 注册窗口关闭事件
addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent event) {
exitApplication();
}
}
);
//等待欢迎屏幕消失
while (splashScreen.isVisible()) {
try {
Thread.sleep(10);
}
// handle exception
catch ( InterruptedException interruptedException ) {
interruptedException.printStackTrace();
}
}
setSize(WIDTH, HEIGHT);
centerWindowOnScreen();
setVisible(true);
createNewWindow();
} // 构造方法MainWindow结束
private InternalWindow createNewWindow() {
InternalWindow frame = new InternalWindow("学生成绩簿" ,this);
// 添加事件监听器
frame.addInternalFrameListener(new InternalFrameListener());
frame.setOpaque(true);
desktopPane.add(frame);
frame.setVisible(true);
try {
frame.setSelected(true);
} catch ( PropertyVetoException vetoException ) {
vetoException.printStackTrace();
}
return frame;
}
// InternalFrameAdapter监听InternalFrame事件
private class InternalFrameListener
extends InternalFrameAdapter {
//关闭事件处理
public void internalFrameClosing(
InternalFrameEvent event ) {
InternalWindow frame =
( InternalWindow ) event.getSource();
if ( frame.close() ) {
saveMenuItem.setAction( null );
saveAsMenuItem.setAction( null );
}
}// end of method: internalFrameClosing
//当内部窗口成为活动时的事件处理
public void internalFrameActivated(InternalFrameEvent event) {
InternalWindow frame =(InternalWindow) event.getSource();
saveMenuItem.setAction(frame.getSaveAction());
saveMenuItem.setIcon(null);
saveAsMenuItem.setAction(frame.getSaveAsAction());
saveAsMenuItem.setIcon(null);
} // 方法internalFrameActivated结束
} // 类 InternalFrameListener结束
//退出事件处理,关闭所有内部窗口并允许用户选择保存
private void exitApplication() {
//获取桌面窗格中的所有内部框
JInternalFrame frames[] = desktopPane.getAllFrames();
boolean allFramesClosed = true; //是否全部数据保存标志
for ( int i = 0; i < frames.length; i++ ) {
InternalWindow nextFrame =
( InternalWindow ) frames[ i ];
try {
nextFrame.setSelected( true );
}
catch ( PropertyVetoException vetoException ) {
vetoException.printStackTrace();
}
allFramesClosed = allFramesClosed && nextFrame.close();
}
//全部关闭方可退出
if (allFramesClosed)
System.exit( 0 );
} // 方法exitApplication结束
// 显示欢迎界面
public void showSplashScreen() {
// 实例化ImageIcon对象,加载图像
Icon logoIcon = new ImageIcon(
getClass().getResource( "images/logo.png" ) );
JLabel logoLabel = new JLabel( logoIcon );
logoLabel.setBackground( Color.white );
logoLabel.setBorder(
new MatteBorder( 5, 5, 5, 5, Color.black ) );
logoLabel.setOpaque( true );
splashScreen = new SplashScreen( logoLabel );
splashScreen.showSplash( 3000 );
} // 方法showSplashScreen结束
// 窗口居中
private void centerWindowOnScreen() {
Dimension screenDimension =
Toolkit.getDefaultToolkit().getScreenSize(); //获取屏幕高度和宽度
int width = getSize().width; //获取窗口宽度
int height = getSize().height; //获取窗口高度
int x = (screenDimension.width - width) / 2 ;
int y = (screenDimension.height - height) / 2 ;
setBounds(x, y, width, height);
} // 方法centerWindowOnScreen结束
// 应用程序入口
public static void main(String args[]) {
new MainWindow();
} // 方法main结束
} // 类MainWindow结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -