【发布时间】:2021-09-21 21:27:34
【问题描述】:
如果我的代码很糟糕,请原谅。第一次学习 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.
}
}
【问题讨论】:
-
第一次学习 Swing... - 1) 那你为什么要在测试之前先写 100 行代码呢?慢慢开始。添加几个组件并进行测试。一旦可行,请添加更多。 2) 不要使用“Button”,这是一个 AWT 组件。 Swing 组件以“J”开头,因此您应该使用
JButton。首先阅读Swing tutorial 中的工作示例,这些示例将帮助您更好地构建代码。 -
"..在 Java 方面一无所知;仍在努力学习 Java,还想添加一个 UI 组件以使其更具挑战性。" 适合谁?对我们来说,整理发布的乱七八糟的代码,充斥着程序员在尝试制作多线程、事件驱动、跨平台 GUI 之前应该过去的误解?我建议坚持使用非 GUI 应用程序,直到您不必写 "clueless at Java general"。
标签: java swing user-interface