繁体   English   中英

为什么我不能向 JFrame (Java Swing) 添加组件?

[英]Why can't I add components to my JFrame (Java Swing)?

如果我的代码很糟糕,请原谅。 第一次学习 Swing,一般对 Java 一窍不通; 仍在尝试学习 Java 并且还认为我会添加一个 UI 组件以使其更具挑战性。

我有一个反复出现的错误,我无法弄清楚。

首先,当前代码将启动(从主文件调用),但在窗口中没有组件(即,它以空白窗口启动),所以我已经开始将组件添加到我的 JFrame 中(请参阅 'frame.add ()',位于 initComponents() 的开头)。 尝试添加组件时出现此错误:

错误:“无法读取字段“父”,因为“comp”为空”

这是由于缺乏事件处理吗? 我打算尝试让它工作,然后再添加该功能。 见下文。 或者这是由其他原因引起的?

public class UserInterface extends javax.swing.JFrame {

    private javax.swing.JFrame frame;
    private java.awt.Button button_Number_One;
    private java.awt.Button button_Number_Two;
    private java.awt.Button button_Number_Three;
    private java.awt.Button button_Number_Four;
    private java.awt.Button button_Number_Five;
    private java.awt.Button button_Number_Six;
    private java.awt.Button button_Number_Seven;
    private java.awt.Button button_Number_Eight;
    private java.awt.Button button_Number_Nine;
    private java.awt.Button button_Number_Zero;
    private java.awt.Button back_Button1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JTextField jTextField1;

    public void starter() {
        initComponents();
        new UserInterface().setVisible(true);
    }

    private void initComponents() {

        frame = new javax.swing.JFrame();
        frame.add(jLabel1);

        jTextField1 = new javax.swing.JTextField();
        jTextField1.setText("jTextField1");
        jTextField1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField_ActionPerformed(evt);
            }
        });

        jLabel1 = new javax.swing.JLabel();
        jLabel1.setText("Result:");

        button_Number_One = new java.awt.Button();
        button_Number_One.setLabel("1");
        button_Number_One.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                button_Number_One_ActionPerformed(evt);
            }
        });

        button_Number_Two = new java.awt.Button();
        button_Number_Two.setLabel("1");
        button_Number_Two.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                button_Number_Two_ActionPerformed(evt);
            }
        });

        button_Number_Three = new java.awt.Button();
        button_Number_Three.setLabel("1");
        button_Number_Three.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                button_Number_Three_ActionPerformed(evt);
            }
        });

        button_Number_Four = new java.awt.Button();
        button_Number_Four.setLabel("1");
        button_Number_Four.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                button_Number_Four_ActionPerformed(evt);
            }
        });

        button_Number_Five = new java.awt.Button();
        button_Number_Five.setLabel("1");
        button_Number_Five.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                button_Number_Five_ActionPerformed(evt);
            }
        });

        button_Number_Six = new java.awt.Button();
        button_Number_Six.setLabel("1");
        button_Number_Six.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                button_Number_Six_ActionPerformed(evt);
            }
        });

        button_Number_Seven = new java.awt.Button();
        button_Number_Seven.setLabel("1");
        button_Number_Seven.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                button_Number_Seven_ActionPerformed(evt);
            }
        });

        button_Number_Eight = new java.awt.Button();
        button_Number_Eight.setLabel("1");
        button_Number_Eight.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                button_Number_Eight_ActionPerformed(evt);
            }
        });

        button_Number_Nine = new java.awt.Button();
        button_Number_Nine.setLabel("1");
        button_Number_Nine.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                button_Number_Nine_ActionPerformed(evt);
            }
        });

        button_Number_Zero = new java.awt.Button();
        button_Number_Zero.setLabel("1");
        button_Number_Zero.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                button_Number_Zero_ActionPerformed(evt);
            }
        });

        back_Button1 = new java.awt.Button();
        back_Button1.setLabel("Back");
        back_Button1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                back_Button1_ActionPerformed(evt);
            }
        });

        // jLabel1 = new javax.swing.JLabel();
        // jLabel1.setText("Result: ");

        jMenu1 = new javax.swing.JMenu();
        jMenu1.setText("File");
        setJMenuBar(jMenuBar1);

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    }

    private void button_Number_One_ActionPerformed(java.awt.event.ActionEvent evt) {
        // Event handling code here.
    }

    private void button_Number_Two_ActionPerformed(java.awt.event.ActionEvent evt) {
        // Event handling code here.
    }

    private void button_Number_Three_ActionPerformed(java.awt.event.ActionEvent evt) {
        // Event handling code here.
    }

    private void button_Number_Four_ActionPerformed(java.awt.event.ActionEvent evt) {
        // Event handling code here.
    }

    private void button_Number_Five_ActionPerformed(java.awt.event.ActionEvent evt) {
        // Event handling code here.
    }

    private void button_Number_Six_ActionPerformed(java.awt.event.ActionEvent evt) {
        // Event handling code here.
    }

    private void button_Number_Seven_ActionPerformed(java.awt.event.ActionEvent evt) {
        // Event handling code here.
    }

    private void button_Number_Eight_ActionPerformed(java.awt.event.ActionEvent evt) {
        // Event handling code here.
    }

    private void button_Number_Nine_ActionPerformed(java.awt.event.ActionEvent evt) {
        // Event handling code here.
    }

    private void button_Number_Zero_ActionPerformed(java.awt.event.ActionEvent evt) {
        // Event handling code here.
    }

    private void back_Button1_ActionPerformed(java.awt.event.ActionEvent evt) {
        // Event handling code here.
    }

    private void jTextField_ActionPerformed(java.awt.event.ActionEvent evt) {
        // Event handling code here.
    }

}

您正在尝试向框架添加一个null组件。 从您的代码来看,这可能是您尚未初始化的组件之一。

例如在这部分代码中

frame = new javax.swing.JFrame();
// You first add the label which is not initialised at this point and is therefore null
frame.add(jLabel1); 

// You must initialise the label before adding it to the frame.
jLabel1 = new javax.swing.JLabel();
jLabel1.setText("Result:");

还有一些其他注意事项:

  • 发布错误时,请包含完整的堆栈跟踪,以便人们可以最有效地帮助您。
  • Java 中的查找命名约定
  • 查找如何导入东西

这是修改后的代码,它将在JFrame添加jLabel1 ,您必须根据您的要求将其余组件添加到框架中。 该错误与您在初始化之前将组件添加到框架中有关,这就是它抛出空指针异常的原因。

import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class UserInterface extends javax.swing.JFrame {

  private Button button_Number_One;
  private Button button_Number_Two;
  private Button button_Number_Three;
  private Button button_Number_Four;
  private Button button_Number_Five;
  private Button button_Number_Six;
  private Button button_Number_Seven;
  private Button button_Number_Eight;
  private Button button_Number_Nine;
  private Button button_Number_Zero;
  private Button back_Button1;
  private JLabel jLabel1;
  private JMenu jMenu1;
  private JMenuBar jMenuBar1;
  private JTextField jTextField1;

  public static void main(String[] args) {
    new UserInterface().starter();
  }

  public void starter() {
    initComponents();
    setSize(300, 300);
    setVisible(true);
  }

  private void initComponents() {

    jLabel1 = new JLabel();
    jLabel1.setText("Result:");

    this.add(jLabel1);

    jTextField1 = new JTextField();
    jTextField1.setText("jTextField1");
    jTextField1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jTextField_ActionPerformed(evt);
      }
    });

//    jLabel1 = new JLabel();
//    jLabel1.setText("Result:");

    button_Number_One = new Button();
    button_Number_One.setLabel("1");
    button_Number_One.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button_Number_One_ActionPerformed(evt);
      }
    });

    button_Number_Two = new Button();
    button_Number_Two.setLabel("1");
    button_Number_Two.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button_Number_Two_ActionPerformed(evt);
      }
    });

    button_Number_Three = new Button();
    button_Number_Three.setLabel("1");
    button_Number_Three.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button_Number_Three_ActionPerformed(evt);
      }
    });

    button_Number_Four = new Button();
    button_Number_Four.setLabel("1");
    button_Number_Four.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button_Number_Four_ActionPerformed(evt);
      }
    });

    button_Number_Five = new Button();
    button_Number_Five.setLabel("1");
    button_Number_Five.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button_Number_Five_ActionPerformed(evt);
      }
    });

    button_Number_Six = new Button();
    button_Number_Six.setLabel("1");
    button_Number_Six.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button_Number_Six_ActionPerformed(evt);
      }
    });

    button_Number_Seven = new Button();
    button_Number_Seven.setLabel("1");
    button_Number_Seven.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button_Number_Seven_ActionPerformed(evt);
      }
    });

    button_Number_Eight = new Button();
    button_Number_Eight.setLabel("1");
    button_Number_Eight.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button_Number_Eight_ActionPerformed(evt);
      }
    });

    button_Number_Nine = new Button();
    button_Number_Nine.setLabel("1");
    button_Number_Nine.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button_Number_Nine_ActionPerformed(evt);
      }
    });

    button_Number_Zero = new Button();
    button_Number_Zero.setLabel("1");
    button_Number_Zero.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button_Number_Zero_ActionPerformed(evt);
      }
    });

    back_Button1 = new Button();
    back_Button1.setLabel("Back");
    back_Button1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        back_Button1_ActionPerformed(evt);
      }
    });

    // jLabel1 = new JLabel();
    // jLabel1.setText("Result: ");

    jMenu1 = new JMenu();
    jMenu1.setText("File");
    setJMenuBar(jMenuBar1);

    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

  private void button_Number_One_ActionPerformed(ActionEvent evt) {
    // Event handling code here.
  }

  private void button_Number_Two_ActionPerformed(ActionEvent evt) {
    // Event handling code here.
  }

  private void button_Number_Three_ActionPerformed(ActionEvent evt) {
    // Event handling code here.
  }

  private void button_Number_Four_ActionPerformed(ActionEvent evt) {
    // Event handling code here.
  }

  private void button_Number_Five_ActionPerformed(ActionEvent evt) {
    // Event handling code here.
  }

  private void button_Number_Six_ActionPerformed(ActionEvent evt) {
    // Event handling code here.
  }

  private void button_Number_Seven_ActionPerformed(ActionEvent evt) {
    // Event handling code here.
  }

  private void button_Number_Eight_ActionPerformed(ActionEvent evt) {
    // Event handling code here.
  }

  private void button_Number_Nine_ActionPerformed(ActionEvent evt) {
    // Event handling code here.
  }

  private void button_Number_Zero_ActionPerformed(ActionEvent evt) {
    // Event handling code here.
  }

  private void back_Button1_ActionPerformed(ActionEvent evt) {
    // Event handling code here.
  }

  private void jTextField_ActionPerformed(ActionEvent evt) {
    // Event handling code here.
  }

}

您的UserInterface类扩展了JFrame类,因此它继承了JFrame的所有功能。 你在那里做的是为你自己的目的定义一种特殊类型的JFrame ,所以在你自己的实现中创建一个JFrame对我来说真的没有意义。 这可能是您的问题,因为父类将引用JFrame 我建议尝试使用标准JFrame并首先向其中添加按钮、标签等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM