📄 modeling.java
字号:
/*
*@(#)Modeling.java 2.0 2005/04/21
*
*清华大学 精密仪器与机械学系
*范灿升 fancansheng@163.com
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//导入系统类
import input.EquationInput;
import input.GraphInput;
import input.FitInput;
import lib.Library;
import lib.Splash;
//导入自定义类
/**
*这个类是整个程序的主类,提供一些基于主界面的操作,用户从主界面中选择执行程序相应的功能。
*@version 2.0, 2005/04/21
*@author 范灿升
*/
public class Modeling implements ActionListener
{
private static JMenuItem linearFit;
private static JMenuItem polyFit;
private static JMenuItem spline;
private static JMenuItem multiFit;
private static JMenuItem dijkstra;
private static JMenuItem hamilton;
private static JMenuItem huffman;
private static JMenuItem solveLinear;
private static JMenuItem linearProgram;
private static JMenuItem homePage;
private static JMenuItem about;
private static JFrame mainFrame;
private static JPanel mainPanel;
private static JPanel inputPanel;
private static JPanel computePanel;
/**
*main方法,Java应用程序的入口
*@param args 参数字符串数组
*/
public static void main(String args[])
{
new Splash();
mainFrame=new JFrame("实用数学建模程序");
Container mainContainer=mainFrame.getContentPane();
BorderLayout frameLayout=new BorderLayout();
mainContainer.setLayout(frameLayout);
mainFrame.setFont(Library.font);
mainFrame.setIconImage(Library.polyhedronIcon.getImage());
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setResizable(false);
//设置窗体的一些主要参数
BorderLayout mainPanelLayout=new BorderLayout();
mainPanel=new JPanel(true);
inputPanel=new JPanel(true);
computePanel=new JPanel(true);
mainPanel.setLayout(mainPanelLayout);
//用JPanel进行组装
JMenuBar menuBar=new JMenuBar();
JMenu fit=new JMenu("拟合与插值");
JMenu graph=new JMenu("图论基本算法");
JMenu others=new JMenu("其他算法");
JMenu help=new JMenu("帮助");
linearFit=new JMenuItem("一元线性回归");
polyFit=new JMenuItem("多项式回归");
spline=new JMenuItem("三次样条插值");
multiFit=new JMenuItem("多元线性回归");
fit.add(linearFit);
fit.add(polyFit);
//////////////////
//fit.add(spline);
//////////////////
fit.add(multiFit);
dijkstra=new JMenuItem("最短路计算");
hamilton=new JMenuItem("旅行商问题");
huffman=new JMenuItem("哈夫曼树");
graph.add(dijkstra);
graph.add(hamilton);
graph.add(huffman);
solveLinear=new JMenuItem("求解线性代数方程组");
linearProgram=new JMenuItem("线性规划");
others.add(solveLinear);
////////////////////////////
//others.add(linearProgram);
////////////////////////////
homePage=new JMenuItem("访问作者主页");
about=new JMenuItem("关于...");
help.add(homePage);
help.add(about);
fit.setFont(Library.font);
graph.setFont(Library.font);
others.setFont(Library.font);
help.setFont(Library.font);
linearFit.setFont(Library.font);
polyFit.setFont(Library.font);
spline.setFont(Library.font);
multiFit.setFont(Library.font);
dijkstra.setFont(Library.font);
hamilton.setFont(Library.font);
huffman.setFont(Library.font);
solveLinear.setFont(Library.font);
linearProgram.setFont(Library.font);
homePage.setFont(Library.font);
about.setFont(Library.font);
//设置字体
menuBar.add(fit);
menuBar.add(graph);
menuBar.add(others);
menuBar.add(help);
//添加菜单项
Modeling modeling=new Modeling();
linearFit.addActionListener(modeling);
polyFit.addActionListener(modeling);
spline.addActionListener(modeling);
multiFit.addActionListener(modeling);
dijkstra.addActionListener(modeling);
hamilton.addActionListener(modeling);
huffman.addActionListener(modeling);
solveLinear.addActionListener(modeling);
homePage.addActionListener(modeling);
about.addActionListener(modeling);
//增加动作
mainContainer.add(mainPanel,BorderLayout.CENTER);
mainFrame.setJMenuBar(menuBar);
mainFrame.pack();
mainFrame.setVisible(true);
}
/**
*由ActionListener所指定的方法,响应用户单击菜单时的动作
*@param e 单击按钮所产生的事件
*/
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==linearFit||e.getSource()==polyFit||e.getSource()==spline)
new FitInput(mainFrame,inputPanel,computePanel,mainPanel).showOne();
else if(e.getSource()==multiFit)
new FitInput(mainFrame,inputPanel,computePanel,mainPanel).showMulti();
else if(e.getSource()==dijkstra)
new GraphInput(mainFrame,inputPanel,computePanel,mainPanel).showDijkstra();
else if(e.getSource()==hamilton)
new GraphInput(mainFrame,inputPanel,computePanel,mainPanel).showHamilton();
else if(e.getSource()==huffman)
new GraphInput(mainFrame,inputPanel,computePanel,mainPanel).showHuffman();
else if(e.getSource()==solveLinear)
new EquationInput(mainFrame,inputPanel,computePanel,mainPanel).showPanel();
else if(e.getSource()==homePage)
{
try
{
Runtime.getRuntime().exec("explorer http://learn.tsinghua.edu.cn/homepage/2003010533/index.htm");
}
catch(Exception runE)
{
JOptionPane.showMessageDialog(mainFrame,"程序出错,无法打开个人主页。","打开错误",JOptionPane.ERROR_MESSAGE);
}
}
else if(e.getSource()==about)
new Splash();
}
//为菜单项添加动作
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -