對(duì)象 - Java JButton數(shù)組初始化后還是空?
問(wèn)題描述
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('計(jì)算器界面練習(xí)');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]);//為什么是Nullarray.add(e.getActionCommand());System.out.println(e.getSource());text.setText(text.getText()+e.getActionCommand()); }}
運(yùn)行結(jié)果如下圖,按鈕都顯示出來(lái)了,為什么輸出是Null?
問(wèn)題解答
回答1:Java foreach語(yǔ)句中的btn只是遍歷myBtns的備份(傳值),并不是引用。引用相當(dāng)于對(duì)原始數(shù)據(jù)做操作,賦值相當(dāng)于對(duì)原始數(shù)據(jù)的副本做操作。所以要在foreach中加一句myBtns[index] = btn;
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++;}
相關(guān)文章:
1. javascript - 微信報(bào)redirect_uri參數(shù)錯(cuò)誤2. 我在centos容器里安裝docker,也就是在容器里安裝容器,報(bào)錯(cuò)了?3. android - 類(lèi)似微信朋友圈或者QQ空間說(shuō)說(shuō)那種點(diǎn)擊圖片放大,并且有放大縮小手勢(shì),左右滑動(dòng)圖片手勢(shì)效果4. 網(wǎng)頁(yè)動(dòng)畫(huà)等過(guò)渡效果,CSS3 transitions 和 jQuery animations 誰(shuí)實(shí)現(xiàn)的性能更好?5. javascript - 怎么簡(jiǎn)寫(xiě)這段jQuery功能?6. angular.js - angular中的a標(biāo)簽不起作用7. java - Atom中文問(wèn)題8. java - 初學(xué)SSM 在import自己寫(xiě)的包下的類(lèi)的時(shí)候飄紅,求大神解答?9. javascript - 如何計(jì)算字符串寬度?10. win10系統(tǒng) php安裝swoole擴(kuò)展
