利用java实现一个理财计算器的面板,实现相关计算功能

该代码示例展示了一个简单的JavaSwing计算器应用,包括年化收益率、本金、年金和年限的输入,以及计算本利和的功能。用户界面包含面板布局、颜色变换以及鼠标事件监听,用于改变文本框背景色。程序还有改进空间,如美观度和功能扩展。
摘要由CSDN通过智能技术生成

代码目前局限于较小的数(百万以内),面板个别内容不是很美观,具体布局还不是很好,当然是一个好的尝试,欢迎大家修改,完善代码。

 实现界面

   

具体代码如下

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Xixi {
	/**
	 * Author XiaoBaima
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		MyJFrame mjf = new MyJFrame();

	}

}

class MyJFrame extends JFrame {
	public MyJFrame() {
		super("茜茜计算器");
		this.setSize(750, 500);
		this.setResizable(false);

		JPanel jp = new JPanel(); // 面板
		jp.setBackground(Color.CYAN);
		add(jp, BorderLayout.NORTH); // 面板jp的位置
		JLabel jlb = new JLabel("自制计算器,侵权不删哦");
		jp.add(jlb);

		JPanel jp1 = new JPanel();
		jp1.setBackground(Color.yellow);

		// 添加logo图片
		ImageIcon logoIcon = new ImageIcon("images/logo.png");
		JLabel logoLabel = new JLabel(logoIcon);
		jp1.add(logoLabel);
		// 调整图片大小为100x100
		Image scaledImage = logoIcon.getImage().getScaledInstance(200, 100, Image.SCALE_SMOOTH);
		ImageIcon scaledIcon = new ImageIcon(scaledImage);
		JLabel logoLabel1 = new JLabel(scaledIcon);

		JLabel jlb1 = new JLabel("年化收益率:"); // 标签,下面同理
		jp1.add(jlb1);

		JTextField jtf1 = new JTextField(12); // 文本框,下面同理
		jtf1.addMouseListener(new MouseAdapter() { // 鼠标进去颜色变换,一个鼠标监听
			@Override
			public void mouseEntered(MouseEvent e) {
				jtf1.setBackground(Color.CYAN);
			}

			@Override
			public void mouseExited(MouseEvent e) {
				jtf1.setBackground(Color.WHITE);
			}
		});
		jp1.add(jtf1);
		add(jp1, BorderLayout.CENTER);

		JLabel jlb2 = new JLabel("本金:");
		jp1.add(jlb2);

		JTextField jtf2 = new JTextField(12);
		jtf2.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseEntered(MouseEvent e) {
				jtf2.setBackground(Color.CYAN);
			}

			@Override
			public void mouseExited(MouseEvent e) {
				jtf2.setBackground(Color.WHITE);
			}
		});
		jp1.add(jtf2);

		JLabel jlb3 = new JLabel("年金:");
		jp1.add(jlb3);

		JTextField jtf3 = new JTextField(12);
		jtf3.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseEntered(MouseEvent e) {
				jtf3.setBackground(Color.CYAN);
			}

			@Override
			public void mouseExited(MouseEvent e) {
				jtf3.setBackground(Color.WHITE);
			}
		});
		jp1.add(jtf3);

		JLabel jlb4 = new JLabel("年限:");
		jp1.add(jlb4);

		JTextField jtf4 = new JTextField(12);
		jtf4.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseEntered(MouseEvent e) {
				jtf4.setBackground(Color.CYAN);
			}

			@Override
			public void mouseExited(MouseEvent e) {
				jtf4.setBackground(Color.WHITE);
			}
		});
		jp1.add(jtf4);

		JButton config = new JButton("计算本利和"); // 计算按钮
		jp1.add(config);

		JLabel jlb5 = new JLabel("本息和为:");
		jp1.add(jlb5);

		JTextField jtf5 = new JTextField(12);
		jp1.add(jtf5);

		config.addActionListener(new ActionListener() {
			// 按钮的一个动作监听,实现计算的方法
			@Override
			public void actionPerformed(ActionEvent e) {
				double rate = Double.parseDouble(jtf1.getText()); // 年化收益率
				double principal = Double.parseDouble(jtf2.getText()); // 本金
				double annuity = Double.parseDouble(jtf3.getText()); // 年金
				int years = Integer.parseInt(jtf4.getText()); // 年限
				double pow = Math.pow(1 + rate, years);
				double result = principal * pow + annuity * (pow - 1) / rate;

				jtf5.setText(String.format("%.5f", result));

			}
		});

		JPanel pleft = new JPanel();
		add(pleft, BorderLayout.WEST);
		pleft.setLayout(new BorderLayout());

		JLabel leftL = new JLabel("欢迎使用计算器");
		pleft.add(leftL, BorderLayout.NORTH);

		JTextArea tx = new JTextArea(50, 10);
		pleft.add(tx, BorderLayout.CENTER);
		tx.append(
				"使用本计算器请注意以下几点:\n1.****************** \n2.****************** \n3.****************** \n4.****************** \n5.****************** \n6.****************** \n7.****************** \n8.****************** \n9.******************\n10.*****************");

		JPanel pbottom = new JPanel();
		add(pbottom, BorderLayout.SOUTH);
		pbottom.add(new JLabel("联系方式:13256748217"));

		this.setVisible(true);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);

	}

	public MyJFrame(String title) {
		super(title);
	}
}

框架,面板,标签使用的一个基本案例,可以用来参考学习。

如有错误欢迎指正。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值