import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
public class Calcuiator3 {
public static class ZhuJieMian extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
//实现序列化,serialVersionUID 用来表明实现序列化类的不同版本间的兼容性
JTextField x; //文本框
String preOperater = ""; //上一次的运算符
double sum = 0; //运算结果
// public caidanlan{
//
// }
//
// private JMenuBar menuBar;
// private JMenu menuFile;
//
// public void JMDemo(){
// JPanel caidan = new JPanel();//
// JMenuBar caidanlan = new JMenuBar();
// this.setJMenuBar(menuBar);
// menuFile = new JMenu("菜单");
// menuBar.add(menuFile);
//// miSave = new JMenuItem("简易计算器");
//// miExit = new JMenuItem("科学计算器");
//// miCopy = new JMenuItem("程序员");
// }
public ZhuJieMian(String title) {
super(title);
Container c = getContentPane(); //容器
c.setLayout(new BorderLayout()); //容器采用边缘布局
x = new JTextField(50);
c.add("North", x);
String[] buttoned = {"7","8", "9", "+/-", "C", "退格", "倒数",
"4", "5", "6", "+", "-", "*", "/",
"1", "2", "3","sqrt", "pow", "log10", "%",
".", "0","=","cos", "tan", "exp","历史"};
JPanel p = new JPanel(); //面板
p.setLayout(new GridLayout(4, 7, 10, 10)); //面板采用行列数3, 9的网格布局
for (String s : buttoned) { //用一个for循环将按钮添加进面板并注册监听器
JButton b = new JButton(s);
p.add(b);
b.addActionListener(this);
}
c.add("Center", p);
JMenuBar menuBar = createMenuBar();
setJMenuBar(menuBar);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// 创建菜单栏
private JMenuBar createMenuBar() {
JMenuBar menuBar = new JMenuBar();
// 创建文件菜单
JMenu menuFile = new JMenu("计算器");
menuBar.add(menuFile);
// 创建转换子菜单
JMenu menu1 = new JMenu("简易计算器");
JMenu menu2 = new JMenu("科学计算器");
JMenu menu3 = new JMenu("程序员计算器");
menuFile.add(menu1);
menuFile.add(menu2);
menuFile.add(menu3);
return menuBar;
}
private void binaryConversion() {
String inputText = x.getText();
}
//响应用户事件,根据点击按钮实现相关操作
public void actionPerformed(ActionEvent e) {
String Command = e.getActionCommand();
try {
if (Character.isDigit(Command.charAt(0))) {//如果按钮事件为数字键
x.setText(x.getText() + Command); //添加数字
} else if (Command.equals(".")) { //如果按钮事件为”.”键
xiaoshu();
} else if (Command.equals("+/-")) { //如果按钮事件为”+/-”键"
fuhao();
} else if (Command.equals("退格")) { //如果按钮事件为”退格”键
backspace();
} else if (Command.equals("=")) { //如果按钮事件为"=”键
dengyu();
} else if (Command.equals("sqrt")) { //如果按钮事件为"sqrt"键
sqrt();
} else if (Command.equals("log")) { //如果按钮事件为"1og”键
log();
} else if (Command.equals("cos")) { //如果按钮事件为"cos”键
cos();
} else if (Command.equals("tan")) { //如果按钮事件为”tan”键
tan();
} else if (Command.equals("exp")) { //如果按钮事件为"exp”键
exp();
} else if (Command.equals("倒数")) { //如果按钮事件为”求倒”键"
qiudao();
} else if (Command.equals("C")) { //如果按钮事件为"C"键
clear();
} else if (Command.equals("历史")){ //如果按钮事件为"历史"键
lishi();
} else {
doOperation(); //记录运算符和输入的数字
x.setText("");
preOperater = Command;
}
} catch (Exception ex) {
sum = 0;
x.setText("");
}
}
void xiaoshu() { //添加小数点
String s = x.getText();
if (!s.contains(".")) x.setText(s + ".");
}
void fuhao() { //添加负号
String s = x.getText();
if (!s.contains("-"))
x.setText("-" + x.getText());
}
void backspace() { //退格
String s = x.getText();
if (s.length() > 0)
x.setText(s.substring(0, s.length() - 1));
} //删除最后-一个字符
void dengyu() {
doOperation();
x.setText("" + sum);
ShuJu(sum);
preOperater = "";
}
void sqrt() { //求该数的平方根
double m = Double.parseDouble(x.getText());
if (m < 0)
x.setText("负数不能开根号");
else
x.setText("" + Math.sqrt(m));
}
void log() { //求该数的自然对数
double m = Double.parseDouble(x.getText());
if (m < 0)
x.setText("负数不能进行自然对数运算");
else
x.setText("" + Math.log10(m));
}
void cos() { //求该数的余弦
double m = Double.parseDouble(x.getText());
x.setText("" + Math.cos(Math.toRadians(m)));
}
void tan() {//求该数的正切
double m = Double.parseDouble(x.getText());
x.setText("" + Math.tan(Math.toRadians(m)));
}
void exp() { //求e的幂
double m = Double.parseDouble(x.getText());
x.setText("" + Math.exp(m));
}
void qiudao() { //求倒数
if (Double.parseDouble(x.getText()) == 0)
x.setText("除数不能为零");
else {
x.setText(" " + 1 / (Double.parseDouble(x.getText())));
preOperater = "";
}
}
void clear() { //清零
sum = 0;
x.setText("");
preOperater = "";
}
//根据记录的运算符将前面记录的结果sum与文本框中的数据进行运算
void doOperation() {
double m = Double.parseDouble(x.getText());
if (preOperater.equals("")) sum = m; //将结果与文本框中的数据按照前一个运算符运算
if (preOperater.equals("+")) sum = sum + m; //加法运算
if (preOperater.equals("-")) sum = sum - m; //减法运算
if (preOperater.equals("*")) sum = sum * m; //乘法运算
if (preOperater.equals("/")) sum = sum / m; //除法运算
if (preOperater.equals("%")) sum = sum % m; //求余
if (preOperater.equals("pow")) sum = Math.pow(sum, m);
}
void ShuJu(double sum){
SimpleDateFormat data=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
double s1=sum;
Connection con = null;
PreparedStatement ps = null;
try {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;database=KECHENGSHEJI", "shengyiguo", "gena20031121");
con.setAutoCommit(true);
System.out.println("已将数据添加到表格");
String sql = "INSERT INTO shuju(日期,数据) VALUES (?,?)";
ps = con.prepareStatement(sql);
ps.setString(1, data.format(new Date()));
ps.setString(2, String.valueOf(s1));
ps.executeUpdate();
}catch (SQLException e){
e.printStackTrace();
}
try {
if (con != null)
con.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
try {
if (ps != null)
ps.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
void lishi(){
ResultSet resultSet=null;
Connection con = null;
Statement stat;
PreparedStatement ps= null;
String time;
Double shuju;
try {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;database=KECHENGSHEJI","shengyiguo","gena20031121");
con.setAutoCommit(true);
stat=con.createStatement();
String sql="SELECT 日期,数据 FROM shuju";
resultSet=stat.executeQuery(sql);
ps=con.prepareStatement(sql);
System.out.println(" "+"日期"+" "+"数据");
while(resultSet.next()){
time=resultSet.getString("日期");
shuju=resultSet.getDouble("数据");
ArrayList<String> arrayList1=new ArrayList<>();
ArrayList<String> arrayList2=new ArrayList<>();
arrayList1.add(time);
arrayList2.add(String.valueOf(shuju));
Object[][] table=new Object[arrayList1.size()][2];
for (int i = 0; i < arrayList1.size(); i++) {
table[i][0]=arrayList1.get(i);
table[i][1]=arrayList2.get(i);
}
System.out.println(Arrays.deepToString(table));
}
} catch (SQLException e) {
e.printStackTrace();
}
if (con!=null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps!=null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (resultSet!=null){
try{
resultSet.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
JFrame x=new ZhuJieMian("计算器");
JMenuBar menuBar = new JMenuBar();
x.setBounds(300,100,630,290);
//x.setSize(630,290); //按键大小,若大小不合适则会出现文字显示不全的现象
x.setVisible(true);
}
}
在我的代码中的菜单项怎么实现跳转