下面是帶有GUI的代碼以及之前創建的for循環的修訂。每次用戶按下一個按鈕時,我都希望文本框能夠反映該按鈕被按下。後續操作(將單個數字整數合併成一個數字)
如果用戶按下1按鈕一次:1被推到現場。 如果用戶按下1按鈕兩次:11被壓入現場。 ...等等。
而是,程序第二次按下按鈕時會崩潰。有人能告訴我發生了什麼事嗎?
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Arrays;
import java.util.ArrayList;
import java.lang.Math;
public class poopy
{
public static void main(String[] args)
{
//frame width and height
final int FRAME_WIDTH = 290;
final int FRAME_HEIGHT = 210;
//created frame and panel. Panel layout is taken away from the flow layout.
JFrame myFrame = new JFrame();
myFrame.setTitle("Simple Calculator");
myFrame.setSize(FRAME_WIDTH,FRAME_HEIGHT);
JPanel myPanel = new JPanel();
myPanel.setLayout(null);
//TextField on Simple Calculator
final JTextField myText = new JTextField();
myText.setSize(250,30);
myText.setLocation(10,10);
final JButton oneButton = new JButton("1");
oneButton.setSize(50,50);
oneButton.setLocation(10,102);
//makes panel visible and close when the 'x' is hit
myFrame.add(myPanel);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setVisible(true);
myPanel.add(oneButton);
myPanel.add(myText);
class CalculatorListener implements ActionListener
{
ArrayList<Integer> num = new ArrayList<Integer>();
double x=0;
int k = 0;
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == oneButton)
{
num.add(1);
for(int i = num.size() -1; i>=0; i--)
{
x = num.get(k) * Math.pow(10,i);
k=k+1;
}
myText.setText(" " + String.valueOf(x));
}
}
}
//buttons are given life
CalculatorListener myListener = new CalculatorListener();
oneButton.addActionListener(myListener);
}
}
當程序「崩潰」時,在特定的代碼行中是否存在特定的異常?那可能會告訴你到底發生了什麼問題。 – David