![](/img/trans.png)
[英]Java Swing: Why can't I drawImage() on an instance of JFrame?
[英]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:");
还有一些其他注意事项:
这是修改后的代码,它将在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.