0

スクリプトを実行しようとすると NPE が発生しますが、その理由がわかりません。目的は、JList で選択したファイルを実行することなので、JList の母集団から始まる関連するコードを次に示します。

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 をリストするクラスの一部で、マークされた行です。これら 2 つのコード グループは、2 つの異なるクラスからのものです。

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!");
        }
    }
}
4

1 に答える 1

0

を初期化していませんARForm mform。おそらくそれが問題ですか?

于 2013-03-27T20:29:47.110 に答える