Java布局调试错误

标签 java user-interface nullpointerexception layout-manager grouplayout

我创建了一个 GUI 并复制了生成代码,仔细修改了类所需的内容,并添加了所有必要的导入等,但是当我构建项目时,它给了我这个我无法解决的错误弄清楚

run:
Exception in thread "main" java.lang.NullPointerException
  at question3_test.Triangle.<init>(Triangle.java:35)
  at question3_test.Triangle.main(Triangle.java:142)
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)

这是我复制过来的代码(以便更好地理解)

package question3_test;
import java.awt.*;
import javax.swing.*;
public class Triangle extends JFrame
{
    private JButton jButton1;
    private JLabel jLabel2;
    private JLabel jLabel3;
    private JPanel jPanel1;
    private JLabel result_lbl;
    private JLabel side1_lbl;
    private JTextField side1_tf;
    private JTextField side2_tf;
    private JTextField side3_tf;
    private Label title_lbl;

     private void initComponents() 
     {

     }

    public Triangle()
    {
         jPanel1.setMaximumSize(new Dimension(200, 200));    
        title_lbl.setFont(new Font("Arial", 1, 18)); // NOI18N
        title_lbl.setText("AREA OF TRIANGLE");    
        side1_lbl.setFont(new Font("Tahoma", 1, 11)); // NOI18N
        side1_lbl.setText("Side 1:");    
        jLabel2.setFont(new Font("Tahoma", 1, 11)); // NOI18N
        jLabel2.setText("Side 2:");    
        jLabel3.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel3.setText("Side 3:");    
        side1_tf.setMinimumSize(new java.awt.Dimension(60, 20));    
        side2_tf.setMinimumSize(new java.awt.Dimension(60, 20));    
        side3_tf.setMinimumSize(new java.awt.Dimension(60, 20));
        jButton1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jButton1.setText("Calculate Area");
        jButton1.setBorder(null);    
        result_lbl.setText("jLabel4");    
        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap(25, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(33, 33, 33)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(side1_lbl)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(side1_tf, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                                        .addComponent(jLabel2)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED))
                                    .addGroup(jPanel1Layout.createSequentialGroup()
                                        .addComponent(jLabel3)
                                        .addGap(10, 10, 10)))
                                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                    .addComponent(side3_tf, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(side2_tf, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(60, 60, 60)
                        .addComponent(result_lbl))
                    .addComponent(title_lbl, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(17, 17, 17)
                        .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(30, 30, 30))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(title_lbl, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(side1_lbl)
                    .addComponent(side1_tf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(side2_tf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(side3_tf, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(result_lbl)
                .addGap(0, 21, Short.MAX_VALUE))
        );

        title_lbl.getAccessibleContext().setAccessibleName("Area of Triangle");    
 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addContainerGap(37, Short.MAX_VALUE)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(18, 18, 18))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(25, Short.MAX_VALUE))
    );

    }

    public static void main(String args [])
    {
        Triangle mytri = new Triangle();
        mytri.setVisible(true);

    }
}

最佳答案

行:

jPanel1.setMaximumSize(new Dimension(200, 200));

抛出 NullPointerException,因为您尚未为此组件分配任何值。

事实上,您还没有实例化任何子组件,甚至没有调用 initComponents 方法:

private void initComponents() {
    jPanel1 = new JPanel();
    title_lbl = new JLabel();
    side1_lbl = new JLabel();
    ...
}

关于Java布局调试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12824082/

相关文章:

java - 将对象数组初始化为 $100

Java ProcessBuilder 不适用于 wkhtmltopdf

java - 获取上个月的第一个和最后一个日期

c++ - 使用 Qt 在 C++ 中自定义 UI?

java - 找不到 NullPointerException

file - 为什么在对特定 Excel 文件使用开关/步骤时预览选项会抛出错误?

java - 如何在 Spring Boot + GraphQL Java 工具上下文中执行对 GraphQL 的 Java 调用?

c# - .NET : Mechanism for sync-ing long-running tasks

c++ - 在 aux 方法中创建的 QWidget 不显示/绘制

java - 什么是NullPointerException,我该如何解决?