Rumah  >  Soal Jawab  >  teks badan

对象 - Java JButton数组初始化后还是空?

import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.server.Operation;
import java.text.Normalizer.Form;
import java.util.ArrayList;

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


public class Calc extends JFrame implements ActionListener
{
    JTextField text;
    JButton[] myBtns = new JButton[16];    
    String[] btnName = {"7","8","9","+","4","5","6","-","1","2","3","*","C","0","=","/"};
    public Calc()
    {
        super("计算器界面练习");
        this.setBounds(200, 0, 635,600);
        Container content = this.getContentPane();
        FlowLayout flow = new FlowLayout();
        flow.setAlignment(FlowLayout.LEFT);
        content.setLayout(flow);
        
        text = new JTextField("0123");
        text.setPreferredSize(new Dimension(600, 100));
        text.setEditable(false);
        text.setHorizontalAlignment(JTextField.RIGHT);
        text.setFont(new Font("宋体",Font.PLAIN , 80));
        content.add(text);
        
        int index = 0;
        for (JButton btn : myBtns)
        {
            btn = new JButton(btnName[index]);
            btn.setPreferredSize(new Dimension(145,100));
            btn.setFont(new Font("Times New Roman",Font.BOLD,80));
            btn.addActionListener(this);
            content.add(btn);
            index++;
        }

        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    

    @Override
    public void actionPerformed(ActionEvent e)
    {
        ArrayList<String> array = new ArrayList<String>();
        
        System.out.println(myBtns[0]);//为什么是Null
        array.add(e.getActionCommand());
        System.out.println(e.getSource());
        text.setText(text.getText()+e.getActionCommand());
    }

}

运行结果如下图,按钮都显示出来了,为什么输出是Null?

阿神阿神2743 hari yang lalu586

membalas semua(1)saya akan balas

  • 高洛峰

    高洛峰2017-04-18 10:55:53

    Btn dalam pernyataan foreach Java hanyalah sandaran (nilai pas) untuk melintasi myBtns, bukan rujukan. Rujukan adalah bersamaan dengan mengendalikan data asal, dan tugasan adalah bersamaan dengan mengendalikan salinan data asal.
    Jadi tambah myBtns[index] = btn;

    di foreach
    for (JButton btn : myBtns)
            {
                btn = new JButton(btnName[index]);
                myBtns[index] = btn;
                btn.setPreferredSize(new Dimension(145,100));
                btn.setFont(new Font("Times New Roman",Font.BOLD,80));
                btn.addActionListener(this);
                content.add(btn);
                index++;
            }

    balas
    0
  • Batalbalas