stackoverflow 上的某人帮助我编写了这段代码,因此我可以在方法中使用它来返回我单击的按钮...现在 netbeans 不会显示任何冲突的代码,但当我运行它时,它会出现错误
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public final class CharSearch extends Box{
int i =0;
int error = 0;
static JPanel panel;
String original = "Dinosaur";
JLabel label = new JLabel();
String secret = new String(new char[original.length()]).replace('\0', '-');
public CharSearch(){
super(BoxLayout.Y_AXIS);
for(char i = 'A'; i <= 'Z'; i++){
String buttonText = new Character(i).toString();
JButton button = getButton(buttonText);
add(button);
}
}
public JButton getButton(final String text){
final JButton button = new JButton(text);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "You have clicked: "+text);
//If you want to do something with the button:
button.setText("Clicked"); // (can access button because it's marked as final)
}
});
return button;
}
public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
public void run(){
JFrame frame=new JFrame();
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
});
}
}
当我运行该程序时,出现此错误
最佳答案
非常明显,您永远不会初始化静态属性面板:
static JPanel panel;
所以NPE是在这部分代码中生成的:
public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
public void run(){
JFrame frame=new JFrame();
frame.add(panel); // <--------------- NullPointer to panel
frame.pack();
frame.setVisible(true);
}
});
}
关于java - 按钮的返回方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130923/