JButton点击事件获取另一个JPanel中JTextField文本

题目:
编写一个计算贷款支付的计算器。这个计算器t让用户输入利率、年数和贷款总额。当点击按钮时,会显示月支付额和总支付额。

界面效果如图:

界面运行截图

界面排版:
gridlayout中再放一个gridlayout的JPanel

JButton鼠标点击事件中需要获取JPanel中JTextField的文本用于计算,为了达到目的,定义的的JTextField需要用final修饰

Java中int、double类型转换为String类型:

int -> String
int i=12345;
String s=”“;
第一种方法:s=i+”“;
第二种方法:s=String.valueOf(i);
String -> int
s=”12345”;
int i;
第一种方法:i=Integer.parseInt(s);
第二种方法:i=Integer.valueOf(s).intValue();

代码:

package com.suzi.shangji_04;

import javax.swing.*;

import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class LoanCalculator extends JFrame
{
    public LoanCalculator()
    {
        JPanel p1 = new JPanel();
        p1.setLayout(new GridLayout(5, 2));
        final JTextField t1 = new JTextField(8);
        final JTextField t2 = new JTextField(8);
        final JTextField t3 = new JTextField(8);
        final JTextField t4 = new JTextField(8);
        final JTextField t5 = new JTextField(8);
        p1.add(new JLabel("Annual Interest Rate"));
        p1.add(t1);
        p1.add(new JLabel("Number of years"));
        p1.add(t2);
        p1.add(new JLabel("Loan Amount"));
        p1.add(t3);
        p1.add(new JLabel("Mouthly Payment"));
        p1.add(t4);
        p1.add(new JLabel("Total Payment"));
        p1.add(t5);
        setLayout(new GridLayout(2, 1, 5, 5));

        JButton b1 = new JButton("Compute Payment");
        b1.addMouseListener(new MouseAdapter()
        {
            public void mouseClicked(MouseEvent e)
            {
                try
                {
                    double i = Double.parseDouble(t3.getText())
                            + (0.01 * Double.parseDouble(t1.getText()))
                            * Double.parseDouble(t2.getText())
                            * Double.parseDouble(t3.getText());
                    t4.setText(String.valueOf(i
                            / (Double.parseDouble(t2.getText()) * 12)));
                    t5.setText(String.valueOf(i));
                } catch (Exception e2)
                {
                }
            }
        });

        add(p1);
        add(b1);
    }

    public static void main(String[] args)
    {
        LoanCalculator lc = new LoanCalculator();
        lc.setTitle("Loan Calculator");
        lc.setSize(300, 300);
        lc.setLocationRelativeTo(null);
        lc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        lc.setVisible(true);

    }
}
可以使用布局管理器来实现一个JPanel被另一个JPanel覆盖的效果。 下面是一种可能的实现方式: 1. 创建两个JPanel对象,分别为panel1和panel2。 2. 将panel1和panel2都添加到一个JFrame,并设置JFrame的布局管理器为CardLayout。 3. 在panel1添加需要显示的组件,例如按钮、文本框等。 4. 在panel2添加需要覆盖panel1的组件,例如图片、视频等。并设置panel2的透明度为0,即panel2不显示。 5. 在程序通过CardLayout的show()方法来切换panel1和panel2的显示。 示例代码如下: ``` import java.awt.*; import javax.swing.*; public class PanelCoverDemo extends JFrame { private JPanel panel1, panel2; private CardLayout cardLayout; public PanelCoverDemo() { panel1 = new JPanel(); panel2 = new JPanel(); cardLayout = new CardLayout(); // 设置JFrame的布局管理器为CardLayout setLayout(cardLayout); // 在panel1添加需要显示的组件 panel1.add(new JButton("Button")); panel1.add(new JTextField("Text Field")); // 在panel2添加需要覆盖panel1的组件,并设置透明度为0 panel2.setOpaque(false); panel2.add(new JLabel(new ImageIcon("image.jpg"))); // 将panel1和panel2添加到JFrame add(panel1, "Panel1"); add(panel2, "Panel2"); // 显示JFrame setSize(300, 300); setVisible(true); } // 切换panel1和panel2的显示 public void switchPanel() { cardLayout.next(getContentPane()); } public static void main(String[] args) { PanelCoverDemo demo = new PanelCoverDemo(); // 切换panel1和panel2的显示 demo.switchPanel(); } } ``` 在上面的示例代码,首先创建了两个JPanel对象panel1和panel2,并将它们添加到一个JFrame。然后通过CardLayout来管理JFrame的布局,使得panel1和panel2可以相互切换显示。在panel1添加了一个按钮和一个文本框,在panel2添加了一张图片,并设置了透明度为0,使得panel2不显示。最后在程序通过调用CardLayout的next()方法来切换panel1和panel2的显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值