我有这个按钮,它打开计算机上的文件目录,您可以从中选择文件并执行命令。我把他们每个都放在一个班级里,但只有一个人在跑。 如何让它先执行一个类然后再执行另一个类?代码如下:
JButton btnFindMe = new JButton("Find theta");
btnFindMe.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fctheta = new JFileChooser();
fctheta.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int returnVal = fctheta.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
final File filetheta = fctheta.getSelectedFile();
//counts the thetas
class Inputcontatheta {
public int main (String [] arg) throws Exception{
BufferedReader CSVFile = new BufferedReader (new FileReader (filetheta));
String dataRow = CSVFile.readLine();
int ii;
ii=0;
while (dataRow != null && !dataRow.isEmpty()){
dataRow = CSVFile.readLine ();
ii++;
}
CSVFile.close ();
return ii;
}
}
// exectues gaussians
class Inputtheta {
public void main (String [] arg) throws Exception{
Inputcontatheta dimensao= new Inputcontatheta();
int x=dimensao.main(arg);
BufferedReader CSVFile = new BufferedReader (new FileReader (filetheta));
String dataRow = CSVFile.readLine();
double [][] gaussiana = new double [x][6];
int j;
j=0;
while (dataRow != null && !dataRow.isEmpty()){
String [] dataArray = dataRow.split (",");
double[] doubleArray =new double[dataArray.length];
int i=0;
while (i< dataArray.length ) {
doubleArray[i]= Double.parseDouble(dataArray[i]);
i++;
}
gaussiana[j][0]=1.0;
gaussiana[j][1]=0.25;
gaussiana[j][2]=doubleArray[0];
gaussiana[j][3]=-doubleArray[0];
gaussiana[j][4]=doubleArray[1];
gaussiana[j][5]=doubleArray[2];
j++;
System.out.println(Arrays.toString(doubleArray));
dataRow = CSVFile.readLine();
}
CSVFile.close ();
System.out.println(gaussiana[1][5]);
//return gaussiana [][] double;
}}
}
}});
答案 0 :(得分:0)
尝试将Inputcontatheta
和Inputtheta
类转换为ActionListener
的方法,如下所示:
btnFindMe.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JFileChooser fctheta = new JFileChooser();
fctheta.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int returnVal = fctheta.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File fileTheta = fctheta.getSelectedFile();
int x = countThetas(fileTheta);
executeGaussians(fileTheta, x);
}
}
private int countThetas(File fileTheta) {
// stuff from Inputcontatheta here
}
private void executeGaussians(File fileTheta, int x) {
// stuff from Inputtheta here
}
});
话虽这么说,也许不只是计算csv文件中的行数,countThetas
方法实际上可以将csv文件解析为double[][]
数组,你可以将该数组传递给{{ 1}}。 (如果您事先不知道数据的长度,可以使用java.util.ArrayList
。)