java的swing组件简单计算器(原子组件)

效果图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 使用java的swing组件来制作:
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
* 简单计算器(原子组件举例)
 * @param args
 */
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.ComboBoxEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingConstants;
import javax.swing.border.TitledBorder;

public class Calculator implements ActionListener,ItemListener{
 static JFrame f=null;//因为要在main静态方法中引用,必须设为static类型
 ButtonGroup bg; //按钮组,可组合若干单选按钮
 JComboBox combo; //下拉式列表框
 JSpinner s1; //有序变化选择框
 JLabel L3; //显示计算结果标签
 JRadioButton r1,r2,r3,r4; //单选按钮
 int op=0;
 
 public Calculator() {
  f=new JFrame("第二类原子组件演示");//新建一个窗口
  Container contentPane=f.getContentPane();
  
  JPanel p1=new JPanel(); //新建一个Panel
  p1.setLayout(new GridLayout(1, 4));
  //设置边框
  p1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(
    Color.BLUE,2),"选择运算种类",TitledBorder.CENTER,TitledBorder.TOP));
    
  r1=new JRadioButton("+");
  r2=new JRadioButton("-");
  r3=new JRadioButton("x");
  r4=new JRadioButton("÷");
  p1.add(r1);
  p1.add(r2);
  p1.add(r3);
  p1.add(r4);
  bg=new ButtonGroup();//按钮组,组合4个单选按钮,使一次只能选一个
  bg.add(r1);
  bg.add(r2);
  bg.add(r3);
  bg.add(r4);
  r1.addItemListener(this);//为单选按钮增加事件监听器
  r2.addItemListener(this);
  r3.addItemListener(this);
  r4.addItemListener(this);
  
  JPanel p2=new JPanel();//创建第二个Panel
  p2.setLayout(new GridLayout(2,2));
  p2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(
    Color.BLUE,2),"选择或输入操作数",TitledBorder.CENTER,TitledBorder.TOP));
  JLabel L1=new JLabel("第一个操作数:");
  JLabel L2=new JLabel("第二个操作数:");
  //创建下拉式列表框
  String[] data1= {"0","10","20","30","40","50","60","70","80","90","100"};
  combo=new JComboBox<>(data1);
  combo.setEditable(true);
  ComboBoxEditor editor=combo.getEditor();
  combo.configureEditor(editor, "请选择或直接输入数字");
  
  SpinnerModel sM1=new SpinnerNumberModel(50,0,100,1);//创建有序变化选择框
  s1=new JSpinner(sM1);
  
  p2.add(L1);
  p2.add(combo);
  p2.add(L2);
  p2.add(s1);
  JPanel p3=new JPanel();//创建一个新的panel
  p3.setLayout(new GridLayout(1,2));
  JButton button1 =new JButton("计 算");
  L3=new JLabel("",SwingConstants.CENTER);
  p3.add(button1);
  p3.add(L3);
  button1.addActionListener(this);
  //将3个Panel加在内容面板上
  contentPane.add(p1,BorderLayout.NORTH);
  contentPane.add(p2,BorderLayout.CENTER);
  contentPane.add(p3,BorderLayout.SOUTH);
  
  f.getRootPane().setDefaultButton(button1);//设置窗体回车对应按钮
  f.pack();//排版
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
 }
 
 public void itemStateChanged(ItemEvent e) {//单选钮被点击时触发
  if(e.getSource()==r1) op=1;
  if(e.getSource()==r2) op=2;
  if(e.getSource()==r3) op=3;
  if(e.getSource()==r4) op=4;
 }
 
 public void actionPerformed(ActionEvent e) {//计算按钮被点击时触发
  double a=Double.parseDouble(combo.getSelectedItem().toString());
  double b=Double.parseDouble(s1.getValue().toString());
  double c;
  switch (op) {
  case 1:
   c=a+b;
   L3.setText(""+c);
   break;
  case 2:
   c=a-b;
   L3.setText(""+c);
   break;
  case 3:
   c=a*b;
   L3.setText(""+c);
   break;
  case 4:
   c=a/b;
   L3.setText(""+c);
   break;
  default:
   L3.setText("请选择运算符!");
  }
 }
 
 public static void main(String[] args) {
  new Calculator();
  new PassWord(f);
 }
}
class PassWord implements ActionListener
 {
  JTextField user;
  JPasswordField passwd;
  JButton b1,b2;
  Container dialogPane;
  JDialog d;
  JFrame f;
  
  public PassWord(JFrame f) {
   d=new JDialog();//新建一对话框
   d.setTitle("请输入用户名和密码");
   dialogPane =d.getContentPane();
   dialogPane.setLayout(new GridLayout(3,2));
   dialogPane.add(new JLabel("用户名",SwingConstants.CENTER));
   user=new JTextField();
   dialogPane.add(user);
   dialogPane.add(new JLabel("密 码",SwingConstants.CENTER));
   passwd=new JPasswordField();
   dialogPane.add(passwd);
   b1=new JButton("确定");
   b2=new JButton("退出");
   dialogPane.add(b1);
   dialogPane.add(b2);   
   b1.addActionListener(this);
   b2.addActionListener(this);
   d.setBounds(200,150,400,130);//设定大小
   d.getRootPane().setDefaultButton(b1);//设回车·对应按钮
   d.setVisible(true);
   this.f=f;
  }
  
  public void actionPerformed(ActionEvent e) {
   String cmd=e.getActionCommand();
   if(cmd.equals("确定"))
   {
    String name=user.getText();
    String passWord=passwd.getText();
    if((name.equals("zhi"))&& (passWord.equals("1234")))//用户名和密码正确
    {
     d.dispose();//关闭对话框
     f.setVisible(true);//显示主窗体
     return;
    }else {//输入错误则出现错误信息对话框,并清空以前输入
     JOptionPane.showMessageDialog(d, "错误的用户名或密码",
       "请重新输入",JOptionPane.WARNING_MESSAGE);
     user.setText("");
     passwd.setText("");
    }
   }
   if(cmd.equals("退出"))
    System.exit(0);
  }
 }
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值