java11 - GUI图形用户界面编程

一、JavaSwing界面设计参考教程

二、布局管理器

三、绝对布局

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class GuiDemo {

    private JFrame f; // 窗体
    private JTextField tf; // 文本框

    private JButton btn1; // 按钮 1
    private JButton btn2; // 按钮 2
    private JButton btnAdd; // 按钮 加号 +
    private JButton btnEqual; // 按钮 等于 =
    private JButton btnClear; // 按钮 清除

    StringBuffer sb; // 定义一个变量,存储文本框里面的数值
    Integer number1; // 加数
    Integer number2; // 被加数
    Integer sum; // 和

    boolean b; // 运算符是否被点击

    // 构造方法
    GuiDemo() {
        // 初始化原始数据
        initData();
        // 控件初始化
        initUI();
    }

    private void initData() {
        sb = new StringBuffer("");
        number1 = 0;
        number2 = 0;
        sum = 0;
        b = false;
    }

    private void initUI() {
        f = new JFrame("计算器");
        f.setSize(400, 200); // 设置窗口的宽高
        f.setLocation(100, 100); // 设置窗口的起始点
        // f.setLayout(new FlowLayout()); // 会重新绘制大小
        f.setResizable(false); // 设置窗口一旦创建好,不能在改变大小。
        // f.setBackground(Color.BLUE);
        // 关闭窗口的事件
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        f.setVisible(true); // 让窗口可见

        // 在窗口上面增加一个文本框
        tf = new JTextField();
        tf.setBounds(20, 50, 360, 33);
        tf.setText("0");
        tf.setHorizontalAlignment(JTextField.RIGHT);
        tf.setBackground(Color.WHITE);
        f.add(tf);
        // tf 鼠标事件
        tfMouseEvent();
        
        // 在窗口上面添加按钮
        btn1 = new JButton("1");
        btn1.setBounds(20, 100, 50, 33);
        f.add(btn1);

        btn2 = new JButton("2");
        btn2.setBounds(btn1.getBounds().x + 70, 100, 50, 33);
        f.add(btn2);

        btnAdd = new JButton("+");
        btnAdd.setBounds(btn2.getBounds().x + 70, 100, 50, 33);
        f.add(btnAdd);

        btnEqual = new JButton("=");
        btnEqual.setBounds(btnAdd.getBounds().x + 70, 100, 50, 33);
        f.add(btnEqual);

        btnClear = new JButton("C");
        btnClear.setBounds(btnEqual.getBounds().x + 70, 100, 50, 33);
        f.add(btnClear);

        // 按钮点击事件
        btnEvent();

        f.repaint();
    }
    private void tfMouseEvent() {
        tf.addMouseListener(new MouseListener() {
            
            @Override
            public void mouseReleased(MouseEvent e) {
                // TODO 自动生成的方法存根
                System.out.println("mouseReleased");
            }
            
            @Override
            public void mousePressed(MouseEvent e) {
                // TODO 自动生成的方法存根
                System.out.println("mousePressed");
            }
            
            @Override
            public void mouseExited(MouseEvent e) {
                // TODO 自动生成的方法存根
                System.out.println("mouseExited");
                tf.setBackground(Color.white);
            }
            
            @Override
            public void mouseEntered(MouseEvent e) {
                // TODO 自动生成的方法存根
                System.out.println("mouseEntered");
                tf.setBackground(Color.cyan);
            }
            
            @Override
            public void mouseClicked(MouseEvent e) {
                // TODO 自动生成的方法存根
                System.out.println("mouseClicked");
            }
        });
    }
    
    private void btnEvent() {
        btn1.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO 自动生成的方法存根
                if (b) {
                    sb = new StringBuffer("");
                    b = false;
                }
                sb.append(btn1.getText());
                tf.setText(sb.toString());
            }
        });

        btn2.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO 自动生成的方法存根
                if (b) {
                    sb = new StringBuffer("");
                    b = false;
                }
                sb.append(btn2.getText());
                tf.setText(sb.toString());
            }
        });
        btnAdd.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO 自动生成的方法存根
                b = true;
                number1 += new Integer(tf.getText());
                tf.setText(number1.toString());
            }
        });
        btnEqual.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO 自动生成的方法存根
                b = false;
                number2 = new Integer(tf.getText());
                sum = number1 + number2;
                tf.setText(sum.toString());
            }
        });
        btnClear.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO 自动生成的方法存根
                initData();
                tf.setText("0");
            }
        });
        
    }

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        new GuiDemo();
    }

}

四、作业

自己做一个计算器,实现加减乘除四则运算。
如果想增加难度,可以让计算器实现不同进制之间的计算与转换。

转载于:https://www.cnblogs.com/markbin/p/6666293.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值