Java--JFrame.add()方法

来源:互联网 发布:js text readonly 编辑:程序博客网 时间:2024/06/12 20:38

关于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);        }    }}
1 0