java吧 关注:1,241,492贴子:12,715,080
  • 15回复贴,共1

照着源码写,都有错误,还能不能玩了。。呜呜

只看楼主收藏回复

Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1090)
at java.awt.Container.add(Container.java:410)
at org.CalFrame.initialize(CalFrame.java:59)
at org.CalFrame.<init>(CalFrame.java:34)
at org.Main.main(Main.java:9)


1楼2014-08-27 16:58回复
    package org;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Arrays;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    public class CalFrame extends JFrame {
    private JTextField textField = null;
    private String[] mOp={"MC","MR","MS","M+"};
    private String[] rOp={"Back","CE","C"};
    private String[] nOp={"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};
    private JButton button = null;
    private CalService service = new CalService();
    private ActionListener actionListener = null;
    private final int PRE_WIDTH = 360;
    private final int PRE_HEIGHT = 250;
    /*
    * 默认构造器
    */
    public CalFrame(){
    super();
    initialize();
    }
    private void initialize() {
    // TODO Auto-generated method stub
    this.setTitle("计算器");
    this.setResizable(false);
    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout(10, 1));
    panel.add(getTextField(),BorderLayout.NORTH);
    panel.setPreferredSize(new Dimension(PRE_HEIGHT,PRE_WIDTH));
    JButton[] mButton = getMButton();
    JPanel panel1 = new JPanel();
    panel1.setLayout(new GridLayout(5,1,0,5));
    for(JButton b:mButton){
    panel1.add(b);
    }
    JButton[] rButton = getRButton();
    JPanel panel2 = new JPanel();
    panel2.setLayout(new BorderLayout(1,5));
    JPanel panel21 = new JPanel();
    panel21.setLayout(new GridLayout(1, 3, 3, 3));
    for(JButton b:rButton){
    panel21.add(b);
    }
    JButton[] nButton = getNButton();
    JPanel panel22 = new JPanel();
    panel22.setLayout(new GridLayout(4,5,3,5));
    for(JButton b : nButton){
    panel22.add(b);
    }
    panel2.add(panel21,BorderLayout.NORTH);
    panel2.add(panel22, BorderLayout.CENTER);
    panel.add(panel1,BorderLayout.WEST);
    panel.add(panel2,BorderLayout.EAST);
    this.add(panel);
    }
    private JButton[] getNButton() {
    // TODO Auto-generated method stub
    String[] redButton = {"/","*","-","+","="};
    JButton[] result = new JButton[nOp.length];
    for(int i=0;i<this.nOp.length;i++){
    JButton b = new JButton(this.nOp[i]);
    b.addActionListener(getActionListioner());
    Arrays.sort(redButton);
    if(Arrays.binarySearch(redButton, nOp[i])>=0){
    b.setForeground(Color.red);
    }else{
    b.setForeground(Color.blue);
    }
    result[i]=b;
    }
    return result;
    }
    private JButton[] getRButton() {
    // TODO Auto-generated method stub
    JButton[] result = new JButton[rOp.length];
    for(int i=1;i<this.rOp.length;i++){
    JButton b = new JButton(this.rOp[i]);
    b.addActionListener(getActionListioner());
    b.setForeground(Color.red);
    result[i]=b;
    }
    return result;
    }
    private JButton[] getMButton() {
    // TODO Auto-generated method stub
    JButton[] result = new JButton[mOp.length+1];
    result[0] = getButton();
    for(int i=0;i<this.mOp.length;i++){
    JButton b = new JButton(this.mOp[i]);
    b.addActionListener(getActionListioner());
    b.setForeground(Color.red);
    result[i+1]=b;
    }
    return result;
    }
    private JButton getButton() {
    // TODO Auto-generated method stub
    if(button == null){
    button = new JButton();
    }
    return button;
    }
    private Component getTextField() {
    // TODO Auto-generated method stub
    if(textField== null){
    textField = new JTextField("0");
    textField.setEditable(false);
    textField.setBackground(Color.GRAY);
    }
    return textField;
    }
    public ActionListener getActionListioner(){
    if(actionListener==null){
    actionListener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    String cmd = e.getActionCommand();
    String result = null;
    try{
    result = service.callMethod(cmd, textField.getText());
    }
    catch(Exception e1){
    System.out.println(e1.getMessage());
    }
    if(cmd.indexOf("MC")==0){
    button.setText("");
    }else if(cmd.indexOf("M")==0&&service.getStore()>0){
    button.setText("M");
    }
    if(result != null){
    textField.setText(result);
    }
    }
    };
    }
    return actionListener;
    }
    }


    2楼2014-08-27 16:58
    回复
      感觉好高深的样子!


      来自Android客户端3楼2014-08-27 17:12
      收起回复
        你swing随便学学就好,没有必要深学,以后压根用不着。如果有兴趣可加Q群,348073137。用问问题也方便的多


        IP属地:北京4楼2014-08-27 17:54
        收起回复