⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java4.txt

📁 一个计算器的源代码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
首先编译SetLAF.java 
再编译运行 cal.java 

命名为SetLAF.java 先编译它 
package shk; 
import javax.swing.*; 
import java.awt.*; 

public class SetLAF{ 
public static void setWindowsLookAndFeel(){ 
try{ 
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()/*"com.sun.java.swing.plaf.windows.WindowsLookAndFeel"*/); 
}catch(Exception e){ 
System.out.println("设置Windows LAF错误:"+e); 
//e.printStackTrace(); 
} 
} 
public static void setMetalLookAndFeel(){ 
try{ 
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()/*"com.sun.java.swing.plaf.metal.MetalLookAndFeel"*/); 
}catch(Exception e){ 
System.out.println("设置Metal LAF错误:"+e); 
//e.printStackTrace(); 
} 
} 
public static void setMotifLookAndFeel(){ 
try{ 
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); 
}catch(Exception e){ 
System.out.println("设置Motif LAF错误:"+e); 
//e.printStackTrace(); 
} 
} 
} 

其次,以下代码命名为cal.java 编译 运行 

mport shk.SetLAF; 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.geom.*; 
import javax.swing.*; 
import javax.swing.event.*; 
import java.lang.*; 
import javax.swing.border.*; 


class Number_Key extends JPanel{ 
JButton zero = new JButton(" 0 ");//数字键0 
JButton one = new JButton("1");//数字键1 
JButton two = new JButton("2");//数字键2 
JButton three = new JButton("3");//数字键3 
JButton four = new JButton("4");//数字键4 
JButton five = new JButton("5");//数字键5 
JButton six = new JButton("6");//数字键6 
JButton seven = new JButton("7");//数字键7 
JButton eight = new JButton("8");//数字键8 
JButton nine = new JButton("9");//数字键9 
JButton plus = new JButton("+"); 
JButton sub = new JButton("-"); 
JButton mul = new JButton("*"); 
JButton div = new JButton("/"); 
JButton ps = new JButton("+/-"); 
JButton point = new JButton("."); 
JButton equal = new JButton("="); 
JButton ce = new JButton("CE"); 
JButton sqrt = new JButton("sqrt"); 
JButton ds = new JButton("1/x"); 
Number_Key(){ 
setLayout(new GridLayout(4, 5, 5, 5));//定义布局管理器为网格布局 
//添加各个按钮键 
add(seven); 
add(eight); 
add(nine); 
add(div); 
add(ce); 

add(four); 
add(five); 
add(six); 
add(mul); 
add(sqrt); 

add(one); 
add(two); 
add(three); 
add(sub); 
add(ds); 

add(zero); 
add(ps); 
add(point); 
add(plus); 
add(equal); 
} 
} 

class Action_Key extends JPanel{ 
JButton backspace = new JButton("Backspace"); 
JButton equal = new JButton("="); 
JButton c = new JButton("C");//置零键 
Action_Key(){ 
setLayout(new GridLayout(1, 2, 5, 0)); 
add(backspace); 
add(c); 
//add(equal); 
} 
} 


//*********************************主类***************************************** 

public class cal extends JFrame implements ActionListener{ 
Number_Key number_key= new Number_Key(); 
Action_Key action_key = new Action_Key(); 

JMenuBar menuBar; 
Container container; 
private boolean com = false;//当点击按钮+、-、*、/时,com = true 
private int i = 0;//当i=0时说明是我们第一次输入,字符串sum不会累加 
private String sum = "";//存放text的内容 
private double total = 0;//存放点击按钮+、-、*、/之前的数值 
private int symbol = 0;//+、-、*、/的代号分别为1,2,3,4 

private seven2Dpaint text; 
private Graphics g; 
private AboutDialog dialog; 

public cal(){ 

super("Calculator"); 
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设定关闭窗体时退出程序 
setSize(375, 290);//设置窗体大小 
setLocation(300,150);//窗体位置 
setResizable(false);//锁定窗体大小 


//**************************创建下拉菜单************************************ 


menuBar = new JMenuBar(); 
JMenu aMenu=new JMenu(" 观感( L ) "); 
aMenu.setMnemonic(′L′); 
JMenu bMenu=new JMenu(" 帮助( H ) "); 
bMenu.setMnemonic(′H′); 
JMenuItem aaMenuItem=new JMenuItem("Metal"); 
aaMenuItem.addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent event){ 
SetLAF.setMetalLookAndFeel(); 
SwingUtilities.updateComponentTreeUI(container); 
SwingUtilities.updateComponentTreeUI(menuBar); 
} 
}); 
JMenuItem abMenuItem=new JMenuItem("Motif",′M′); 
abMenuItem.addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent event){ 
SetLAF.setMotifLookAndFeel(); 
SwingUtilities.updateComponentTreeUI(container); 
SwingUtilities.updateComponentTreeUI(menuBar); 
} 
}); 
JMenuItem acMenuItem=new JMenuItem("Windows",′W′); 
acMenuItem.addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent event){ 
SetLAF.setWindowsLookAndFeel(); 
SwingUtilities.updateComponentTreeUI(container); 
SwingUtilities.updateComponentTreeUI(menuBar); 
} 
}); 
JMenuItem baMenuItem=new JMenuItem("About",′A′); 
baMenuItem.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent event) { 
if(dialog==null) 
dialog=new AboutDialog(cal.this); 
dialog.show(); 
} 
}); 

menuBar.add(aMenu); 
aMenu.add(aaMenuItem); 
aMenu.addSeparator();//向菜单添加分隔线 
aMenu.add(abMenuItem); 
aMenu.addSeparator();//向菜单添加分隔线 
aMenu.add(acMenuItem); 

menuBar.add(bMenu); 
bMenu.add(baMenuItem); 
this.setJMenuBar(menuBar); 


//**************************在容器内添加各个组件********************************* 


text=new seven2Dpaint(); 
text.setEditable(false); 
text.setHorizontalAlignment(SwingConstants.RIGHT); //讲输入的数字或得到的结果在text的右边显示 
text.setPreferredSize(new Dimension(365,56));//设置文本框大小 
text.setBackground(Color.black);//设置文本框背景色 
container = getContentPane(); 

JPanel fieldPanel =new JPanel(); 
JPanel action_keyPanel =new JPanel(); 
JPanel number_keyPanel =new JPanel(); 

container.add("North",fieldPanel); 
fieldPanel.add(text); 

container.add("East",action_keyPanel); 
action_keyPanel.add(action_key); 
action_key.backspace.addActionListener(this); 
action_key.c.addActionListener(this); 


container.add("South",number_keyPanel); 
number_keyPanel.add(number_key); 
number_key.one.addActionListener(this); 
number_key.two.addActionListener(this); 
number_key.three.addActionListener(this); 
number_key.four.addActionListener(this); 
number_key.five.addActionListener(this); 
number_key.six.addActionListener(this); 
number_key.seven.addActionListener(this); 
number_key.eight.addActionListener(this); 
number_key.nine.addActionListener(this); 
number_key.zero.addActionListener(this); 
number_key.plus.addActionListener(this); 
number_key.sub.addActionListener(this); 
number_key.mul.addActionListener(this); 
number_key.div.addActionListener(this); 
number_key.ps.addActionListener(this); 
number_key.point.addActionListener(this); 
number_key.equal.addActionListener(this); 
number_key.sqrt.addActionListener(this); 
number_key.ce.addActionListener(this); 
number_key.ds.addActionListener(this); 

} 


//******************************创建弹出菜单************************************************ 


class AboutDialog extends JDialog{ 
public AboutDialog(JFrame owner){ 
super(owner,"About",true); 
setSize(310,210); 
setLocation(295,180); 
setResizable(false);//锁定弹出菜单 
Container contentPane = getContentPane(); 

JLabel j1_about,jl_auther,jl_date,jl_company,jl_qq,jl_email; 
JPanel jp1=new JPanel(); 
Border border; 
jp1.setLayout(new GridLayout(6,1)); 
border = BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),"Info"); 
jp1.setBorder(border); 
j1_about=new JLabel("如发现Bug请联系我,以便及时更正,谢谢合作^_^"); 
jl_auther = new JLabel("Auther: 石胡奎"); 
jl_date = new JLabel("Date: 2004.11"); 
jl_company = new JLabel("School: 上海电力学院"); 
jl_qq = new JLabel("QQ: 229199374"); 
jl_email = new JLabel("E-Mail: shihukui@163.com"); 

jp1.add(j1_about); 
jp1.add(jl_auther); 
jp1.add(jl_date); 
jp1.add(jl_company); 
jp1.add(jl_qq); 
jp1.add(jl_email); 

contentPane.add(jp1,BorderLayout.NORTH); 

JButton ok=new JButton("Ok");//设定OK单击事件 
ok.addActionListener(new ActionListener(){ 
public void actionPerformed(ActionEvent evt){ 
setVisible(false); 
} 
}); 
JPanel panel=new JPanel(); 
panel.add(ok); 
contentPane.add(panel,BorderLayout.SOUTH); 
} 
} 



//**************************************算法***************************************** 


public void actionPerformed(ActionEvent e){ 
/*如果是点击数字按钮那么先要判断是否在此之前点击了+、-、*、/、=,如果是那么com=true 
如果没有com= false;或者是否点击数字键,如果是i = 1,如果没有 i = 0; */ 
if (e.getSource()== number_key.one){ 
if (com || i==0){ 
text.setText("1"); 
com=false; 
i=1; 
}else { 
sum=text.getText(); 
text.setText(sum + "1"); 
} 
}else if (e.getSource()== number_key.two){ 
if(com || i==0){ 
text.setText("2"); 
com=false; 
i=1; 
}else{ 
sum=text.getText(); 
text.setText(sum + "2"); 
} 
}else if (e.getSource()== number_key.three){ 
if (com || i == 0) { 
text.setText("3"); 
com = false; 
i = 1; 
}else{ 
sum = text.getText(); 
text.setText(sum + "3"); 
} 
}else if (e.getSource()== number_key.four){ 
if (com || i == 0) { 
text.setText("4"); 
com = false; 
i = 1; 
}else{ 
sum = text.getText(); 
text.setText(sum + "4"); 
} 
}else if (e.getSource()== number_key.five){ 
if (com || i == 0) { 
text.setText("5"); 
com = false; 
i = 1; 
}else{ 
sum = text.getText(); 
text.setText(sum + "5"); 
} 
}else if (e.getSource()== number_key.six){ 
if (com || i == 0) { 
text.setText("6"); 
com = false; 
i = 1; 
}else{ 
sum = text.getText(); 
text.setText(sum + "6"); 
} 
}else if (e.getSource()== number_key.seven){ 
if (com || i == 0) { 
text.setText("7"); 
com = false; 
i = 1; 
}else{ 
sum = text.getText(); 
text.setText(sum + "7"); 
} 
}else if (e.getSource()== number_key.eight){ 
if (com || i == 0) { 
text.setText("8"); 
com = false; 
i = 1; 
}else{ 
sum = text.getText(); 
text.setText(sum + "8"); 
} 
}else if (e.getSource()== number_key.nine){ 
if (com || i == 0) { 
text.setText("9"); 
com = false; 
i = 1; 
}else{ 
sum = text.getText(); 
text.setText(sum + "9"); 
} 
}/*如果text中的数值=0就要判断在这个数值中是否有.存在?如果有那么就在原来数值基础之上添 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -