我试图运行脚本时遇到了NPE,我不明白为什么,目标是运行在我的JList中选择的文件,因此这里是代码的相关位,开始我将JList的人群:Java:JList getSelectedValue()NPE
File f1 = new File("ARForm.java");
String assetClasses = f1.getAbsolutePath();
String[] splits = assetClasses.split(":");
String pathName = splits[0] + ":\\";
File dir = new File(pathName);
String[] lista = dir.list();
@SuppressWarnings("unchecked")
JList list1 = new JList(lista);
JScrollPane js = new JScrollPane(list1);
这里是类上市NPE,标线的一部分,这些代码两组来自两个不同的班级。
Object fileName;
ARForm mform;
public void actionPerformed(ActionEvent a){
try{
**fileName = mform.list1.getSelectedValue();**
Process p = Runtime.getRuntime().exec(fileName.toString());
}
}
如果这还不够,让我知道和生病发布全班。 如果有更简单的方法来做我所做的事情,请让我知道。
编辑
这里是我的班,我悟出了一些进口的是不必要的,因为我懒了复制/粘贴:
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
public class Autorun extends JFrame{
public static void main(String[] args){
ARForm mform = new ARForm();
mform.setTitle("Security Roulette");
mform.pack();
mform.setLocationRelativeTo(null);
mform.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mform.setVisible(true);
}
}
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
public class ARForm extends JFrame{
JButton runButton;
JLabel lab;
File f1 = new File("ARForm.java");
String assetClasses = f1.getAbsolutePath();
String[] splits = assetClasses.split(":");
String pathName = splits[0] + ":\\";
File dir = new File(pathName);
String[] lista = dir.list();
@SuppressWarnings("unchecked")
JList list1 = new JList(lista);
JScrollPane js = new JScrollPane(list1);
public ARForm(){
JPanel jp = new JPanel();
jp.setLayout(new GridLayout(1,2));
jp.add(js);
jp.add(runButton = new JButton("Run"));
runButton.setBounds(186, 10, 89, 23);
runButton.addActionListener(new ButtonAction());
add(jp);
}
}
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import java.io.*;
public class ButtonAction implements ActionListener{
Object fileName;
ARForm mform;
public void actionPerformed(ActionEvent a){
try{
fileName = mform.list1.getSelectedValue();
Process p = Runtime.getRuntime().exec(fileName.toString());
System.exit(0);
}
catch (IOException e){
e.printStackTrace();
JOptionPane.showMessageDialog(null, "Yo Mama!");
}
}
}
你得到一个空指针异常的原因是因为1-'mform'为'null'或'mform.list1'为'null'或者在执行'actionPerformed'时在列表中没有被选中。 – MadProgrammer 2013-03-27 21:03:18
堆栈轨迹的顶部线条对我们来说很有帮助。 – MondKin 2013-03-27 21:57:48
线程“AWT-EventQueue-0”中的异常java.lang.NullPointerException \t at ButtonAction.actionPerformed(ButtonAction.java:12) – Lemiwinks 2013-03-27 23:53:52