📄 java4.txt
字号:
首先编译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 + -