Java--JFrame.add()方法

关于Java的JFrame.add()方法添加两次相同控件的问题


add两次相同的控件后,会把前面的自动取消掉(这里只截取部分示例代码) 如:

    firstText = new JTextField(3);
    add(firstText);

    opration = new JTextField(1);
    add(opration);

    secondText = new JTextField(3);
    add(secondText);

                //amount = new JButton("=");
                //add(amount);
    add(firstText);

    result = new JTextField(5);
    result.setEnabled(false);
    add(result);

这样看起来是添加了五个组件( firstTextoprationsecondText 以及第二次添加的 FirstTextresult ),但实际上添加了四个,因为最前面的一个FirstText被后面第四个给覆盖了。但是要注意了,这里的覆盖并不是在第一个的位置覆盖,而是直接把第一个作废了,也就是FirstText只显示在第三个(因为此时只有四个,FirstText是在倒数第二个)

下图是重复添加两次相同组件的程序截图(为了更直观我把按钮给注释掉了):
程序截图

下图是正常的程序截图:

程序截图

最后,鄙人给大家贴上自己敲的简陋的代码,供大家吐槽

package deefin.com;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class Calculator extends JFrame implements ActionListener{
    private JTextField firstText;
    private JTextField opration;
    private JTextField secondText;
    private JButton amount;
    private JTextField result;
    public Calculator() {
        super("简单计算器");
        setSize(250,80);
        setLayout(new FlowLayout());
        firstText = new JTextField(3);
        add(firstText);
        opration = new JTextField(1);
        add(opration);
        secondText = new JTextField(3);
        add(secondText);
        amount = new JButton("=");
        add(amount);
        result = new JTextField(5);
        result.setEnabled(false);
        add(result);
        setVisible(true);

        amount.addActionListener(this);
    }
    public static void main(String[] args) {
        new Calculator();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        char op = opration.getText().charAt(0);
        int first = Integer.valueOf(firstText.getText());
        int second = Integer.valueOf(secondText.getText());
        int result1 = 0;
        switch (op) {
        case '+':
            result1 = first + second;
            break;
        case '-':
            result1 = first - second;
            break;
        case '*':
            result1 = first * second;
            break;
        case '/':
            if(second == 0) result.setText("false");
            else result1 = first / second;
            break;

        default:
            break;
        }
        if(second == 0){
            ;
        }else{
            String s = String.valueOf(result1);
            result.setText(s);
        }
    }

}
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值