代码目前局限于较小的数(百万以内),面板个别内容不是很美观,具体布局还不是很好,当然是一个好的尝试,欢迎大家修改,完善代码。
实现界面
具体代码如下
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);
}
}
框架,面板,标签使用的一个基本案例,可以用来参考学习。
如有错误欢迎指正。