Java图形界面实验

Java图形界面设计

学一门编程类语言、特别是像 Java 、python 这样具有很强交互的编程类语言,图形界面是不可能避开的,我们呈现给用户的不能是只有我们自己能看懂的,或者是需要有一定编程知识的人才能看懂的应用,做出让所有人都能使用的应用才是面向对象编程存在的意义,下面进行今天的实验内容。

实验内容及要求:
(1) 编写Application程序,在Frame中加入2个按钮(Button)和1个标签(Label),单击两个按钮,显示按钮的标签于Label。
(2) 编写Application程序,在Frame中加入80个按钮,分20行4列,用GridLayout(网格)布局方式,按钮背景为黄色(Color.yellow),按钮文字颜色为红色(Color.red)。
(3) 设计一个简单计算器,在“操作数”标签右侧的两个文本框输入操作数,当单击操作符+,-,×,÷按钮时,对两个操作数进行运算并将结果填入到“结果”标签右侧的文本框中。

实验一:

package test;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class test4 extends JFrame{
 //创建JPanle对象
 private JPanel jp = new JPanel();
 //创建按钮对象
 private JButton b1=new JButton("按钮1");
 private JButton b2 =new JButton("按钮2");
  
 //创建标签对象
 private JLabel j1= new JLabel();
  
 public test4() {
  jp.add(b1);
  jp.add(b2);
  jp.add(j1);
  this.add(jp);
  this.setTitle("CHEN");
  this.setBounds(100,100,400,130);
  b1.addActionListener(new ActionListener(){
   @Override
   public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    test4.this.j1.setText("按钮一内容");
   }
  });
  b2.addActionListener(new ActionListener(){
   @Override
   public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    test4.this.j1.setText("按钮二内容");
   }
  });
  this.setBounds(100,100,400,130);
  this.setVisible(true);
 }
 public static void main(String[] args) {
  new test4();
 }
}

实验结果:

在这里插入图片描述
实验二:

package test;
import java.awt.*;
import javax.swing.*;
public class test5 extends JFrame {
 private JPanel jp =new JPanel();
 private JButton [] jbArray =new JButton[80];
 public test5() {
  for(int i=0;i<jbArray.length;i++) {
   jbArray[i]=new JButton("按钮"+(i+1));
   jbArray[i].setForeground(Color.red);
   jbArray[i].setBackground(Color.yellow);
   jp.add(jbArray[i]);
   jp.setLayout(new GridLayout(20,4));
  }
  this.add(jp);
  this.setTitle("网格布局");
  this.setBounds(100,100,450,200);
  this.setVisible(true);
 }
 public static void main(String[] args) {
  new test5();
 }
}

实验结果:
在这里插入图片描述

实验三:

package test;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
class Calculate {
    public double cal(double data1, double data2, String op) {
        // TODO Auto-generated method stub
        double rel = 0;
        switch (op) {
        case "+":
            rel = data1 + data2;
            break;
        case "-":
            rel = data1 - data2;
            break;
        case "*":
            rel = data1 * data2;
            break;
        case "/":
            rel = data1 / data2;
            break;
        default:
            break;
        }
        return rel;
    }
}
public class test7 extends JFrame implements ActionListener{
 JLabel label1 = new JLabel("第一位操作数");
    JLabel label2 = new JLabel("第二位操作数");
    JLabel label3 = new JLabel("计算结果");
    JTextField textField1 = new JTextField();
    JTextField textField2 = new JTextField();
    JTextField textField = new JTextField();
    JButton button1 = new JButton("+");
    JButton button2 = new JButton("-");
    JButton button3 = new JButton("*");
    JButton button4 = new JButton("/");  
//    JButton button = new JButton("计算");
    public test7() {
        try {
            Init();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
    private void Init() throws Exception{
        // TODO Auto-generated method stub
        getContentPane().setLayout(null);
        label1.setBounds(new Rectangle(78, 60, 105, 31));
        label2.setBounds(new Rectangle(80, 146, 87, 32));
        textField1.setBounds(new Rectangle(185, 59, 152, 28));
        textField2.setBounds(new Rectangle(187, 143, 151, 30));
        button1.addActionListener(this);
        button2.addActionListener(this);
        button3.addActionListener(this);
        button4.addActionListener(this);
//        button.addActionListener(this);
        textField.setEnabled(false);
        textField.setBounds(new Rectangle(189, 196, 150, 30));
        label3.setBounds(new Rectangle(81, 196, 10745, 26));
        button1.setBounds(new Rectangle(113, 111, 44, 23));
        button2.setBounds(new Rectangle(176, 112, 48, 23));
        button3.setBounds(new Rectangle(235, 112, 43, 23));
        button4.setBounds(new Rectangle(295, 110, 38, 24));
//        button.setBounds(new Rectangle(154, 248, 129, 34));
        this.getContentPane().add(label1);
        this.getContentPane().add(label3);
        this.getContentPane().add(textField);
        this.getContentPane().add(label2);
        this.getContentPane().add(textField2);
        this.getContentPane().add(textField1);
        this.getContentPane().add(button1);
        this.getContentPane().add(button2);
        this.getContentPane().add(button3);
        this.getContentPane().add(button4);
//        this.getContentPane().add(button);
        this.setTitle("简易计算器");
        this.setVisible(true);
        this.setSize(450, 350);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        //获取数据
     String d1 = textField1.getText();
     String d2 = textField2.getText();
        String op = " " ;  //运算符号
        if (e.getActionCommand().equals("+")) {
            op = button1.getText();
        } else if (e.getActionCommand().equals("-")) {
            op = button2.getText();
        } else if (e.getActionCommand().equals("*")) {
            op = button3.getText();
        } else if (e.getActionCommand().equals("/")) {
            op = button4.getText();
        }
        //将数据转换为double类型进行计算
        double data1 = Double.parseDouble(d1);
        double data2 = Double.parseDouble(d2);
        Calculate calculate = new Calculate();
        double result = calculate.cal(data1, data2, op);
        textField.setText(String.valueOf(result));
    }
    public static void main(String[] args) {
        new test7();
    }
}

实验结果:
在这里插入图片描述
实验总结:

e.getActionCommand().equals("文本")

此函数可以去查看按钮是否被点击

button(按钮定义名称).getText()

此函数可以获取按钮上的文本

还有等等十分好用的函数可以满足像 提取选项文本之类的方便函数,需要经常学习,这里我就等用到的时候在谈吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值