gpt4 book ai didi

java - 尝试查找 Java Swing 程序中的错误

转载 作者:行者123 更新时间:2023-12-02 05:59:09 26 4
gpt4 key购买 nike

这就是我的程序...这是一种输入和列出马拉松运动员的方法。现在,我在使用“Ny”按钮( http://gyazo.com/e29517af6befd6242d86e6fe1dc5aae1 )时遇到错误。这是错误代码:http://gyazo.com/9f80885d41db38cfa5502fe911f6a893

我认为问题出在“表单”面板和监听器之间。某处可能存在无法访问的代码?前几天我有这个工作,但我丢失了代码。现在不行了。这个想法是“ny”按钮向用户显示一个面板“Form”,但我得到了错误。

我是个大菜鸟,所以我希望这是一些我似乎无法发现的明显语法错误。如有任何反馈,我们将不胜感激。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Maraton extends JFrame{

JTextArea display;
JButton visa;

ArrayList <Tävlande> list = new ArrayList <Tävlande>();




Maraton(){
super("Kista Maraton");
display = new JTextArea();
display.setEditable(false);

add(display, BorderLayout.CENTER);
add(new JScrollPane(display),BorderLayout.CENTER);
setLocationRelativeTo(null);
setSize(300, 400);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);



JPanel nedre = new JPanel ();
JPanel höger = new JPanel();

add(nedre, BorderLayout.SOUTH);
add(höger, BorderLayout.EAST);
höger.setLayout(new BoxLayout(höger, BoxLayout.Y_AXIS));

nedre.setBackground( new Color(246,246,246) );
nedre.setBorder(BorderFactory.createLineBorder(new Color(200,200,200)));


JButton ny = new JButton("Ny");
ny.addActionListener(new NyLis());

JButton visa = new JButton("Visa");
visa.addActionListener(new VisaLis());
visa.setEnabled(false);

JButton nyTid = new JButton("Ny Tid");

nedre.add(ny);
nedre.add(visa);
nedre.add(nyTid);



JRadioButton StartNrRb = new JRadioButton("Startnr");
JRadioButton NamnRb = new JRadioButton("Namn");
JRadioButton ÅlderRb = new JRadioButton("Ålder");
JRadioButton TidRb = new JRadioButton("Tid");

höger.add(StartNrRb);
höger.add(NamnRb);
höger.add(ÅlderRb);
höger.add(TidRb);

ButtonGroup bg1 = new ButtonGroup();
bg1.add(NamnRb);
bg1.add(StartNrRb);
bg1.add(ÅlderRb);
bg1.add(TidRb);

}

class Form2 extends JPanel{
JTextField startNrFält;
JTextField tidFält;

Form2(){
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
JPanel rad0 = new JPanel();
rad0.add(new JLabel("Start Nummer: "));
rad0.add(new JLabel("Tid: "));
rad0.setLayout(new BoxLayout(rad0, BoxLayout.Y_AXIS));
rad0.add(startNrFält);
rad0.add(tidFält);
add(rad0);

}
}

class Form extends JPanel{
JTextField namnFält;
JTextField landFält;
JTextField ålderFält;




Form(){

setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel rad1 = new JPanel();
rad1.add(new JLabel("Namn: "));
namnFält = new JTextField(15);
rad1.add(namnFält);
add(rad1);

JPanel rad2 = new JPanel();
rad2.add(new JLabel("Land: "));
landFält = new JTextField(15);
rad2.add(landFält);
add(rad2);

JPanel rad3 = new JPanel();
rad3.add(ålderFält);
rad3.add(new JLabel("Ålder: "));
ålderFält = new JTextField(5);
rad3.add(ålderFält);
add(rad3);


}

}



class NyLis implements ActionListener{
public void actionPerformed(ActionEvent ave){
Form f = new Form();

int svar = JOptionPane.showConfirmDialog(null, f);


String namn = f.namnFält.getText();
String land = f.landFält.getText();
int ålder = Integer.parseInt(f.ålderFält.getText());


Tävlande tv = new Tävlande (namn,land,ålder);
list.add(tv);
visa.setEnabled(true);
}

}





class VisaLis implements ActionListener{
public void actionPerformed(ActionEvent ave) {
display.setText("");
for (Tävlande t : list){
display.append(t.toString()+"\n");
}
}

}

class NyTidLis implements ActionListener{
public void actionPerformed(ActionEvent ave) {

Form f2 = new Form();

JOptionPane.showMessageDialog(null, f2);

}

}




public static void main (String []args){
new Maraton();
}

}

最佳答案

问题是当您单击 ny 按钮时,您试图将 null 对象添加到 JPanel 中。违规代码位于您的 Form 对象的构造函数中:

rad3.add(ålderFält);
ålderFält = new JTextField(5); //NO! Create the JTextFieldObject first
rad3.add(ålderFält);

将代码更改为以下内容:

ålderFält = new JTextField(5);
rad3.add(ålderFält);
rad3.add(ålderFält);

你应该没有问题(或者至少代码可以为我运行)。

您的签证按钮也有问题。您在构造函数中声明了一个全新的 JButton,当您尝试启用它时,这将导致更多的 NullPointerException

将来,请更仔细地阅读您的堆栈跟踪。有时,您必须深入研究其中的几行,才能准确找出代码中哪里出了问题。当您进行图形处理时尤其如此。

关于java - 尝试查找 Java Swing 程序中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22815795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com