2011-01-23 59 views
0

我創建了一個主類(類文件)。就像我擔心的那樣,它可以正常工作。現在,我正在創建一個GUI,其中包含一個啓動該類文件的按鈕。如何編寫actionListener的代碼以運行mainProgram類?如何從GUI Jbutton運行主類?

這是主類:

import java.io.*; 
import java.util.*; 

public class MainProgram 
{ 
    public static void main (String args[]) throws IOException 
{ 

//Declare variables    
Scanner in = new Scanner (System.in); // Scanner used for user input 
BufferedReader inputQuote; 
BufferedReader inputTheme; 
BufferedReader inputCharacterAnalysis; 
BufferedReader inputSignificance; 
BufferedReader inputPlotEnhancement; 
BufferedReader inputSpeaker; 

String [][] quotes; 
String text; 
int quoteSelection; 
int analysisSelection; 
int howMany=0; 
int count; 

    //Count the number of lines in a text file 
    FileReader fr = new FileReader ("CrucibleQuotations.txt"); 
    LineNumberReader ln = new LineNumberReader (fr); 
    while (ln.readLine() != null) 
    { 
    howMany++; 
    } 

    //import information from the text file 
    inputQuote = new BufferedReader (new FileReader ("CrucibleQuotations.txt")); 
    inputTheme = new BufferedReader (new FileReader("CrucibleTheme.txt")); 
    inputCharacterAnalysis = new BufferedReader (new FileReader("CrucibleCharacterAnalysis.txt")); 
    inputSignificance = new BufferedReader (new FileReader("CrucibleSignificance.txt")); 
    inputPlotEnhancement = new BufferedReader (new FileReader("CruciblePlotEnhancement.txt")); 
    inputSpeaker = new BufferedReader (new FileReader("CrucibleSpeaker.txt")); 

    //Create array based on how many quotes available in the text file 
    quotes = new String [howMany][6]; 

    //Store quote information in the array and display the list of quotations 
    for (int i=0; i<howMany; i++) 
    { 
    quotes [i][0] = inputQuote.readLine(); 
    System.out.println (i+1 + ") " + quotes [i][0]); 
    quotes [i][1] = inputTheme.readLine(); 
    quotes [i][2] = inputCharacterAnalysis.readLine(); 
    quotes [i][3] = inputSignificance.readLine(); 
    quotes [i][4] = inputPlotEnhancement.readLine(); 
    quotes [i][5] = inputSpeaker.readLine(); 
    } 

    //Ask user to choose the quote they want to analyze 
    System.out.println ("Choose a quotation by inputting the number. If the quotation you would like to analyse is unavailable, you may create your own by entering the number 0. ");  
    quoteSelection = in.nextInt(); 

    if (quoteSelection!=0) 
    { 
    //Show user selections to analyze 
    System.out.println ("Choose your analysis"); 
    System.out.println ("1. Theme"); 
    System.out.println ("2. Character Analysis"); 
    System.out.println ("3. Significance"); 
    System.out.println ("4. Plot Enhancement"); 
    System.out.println ("5. Speaker"); 
    analysisSelection = in.nextInt(); 

    //Display the analysis 
    if (analysisSelection <= 5 || analysisSelection > 0) 
    { 
     System.out.println (quotes [quoteSelection-1][analysisSelection]); 
    } 
    } 

這將是我的GUI類

import javax.swing.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.BorderLayout; 
import java.awt.GridLayout; 

public class GUI 
{  
    public GUI() 
    {  
    JFrame frame = new JFrame ("Quotes"); 
    frame.setSize(500, 500); 
    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 

    cButton.addActionListener (new ActionListener() { 
     public void actionPerformed (ActionEvent ae) { 
     try{ 
     MainProgram.main (new String[]); 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
    } 
    }); 
    } 

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

回答

1

記住

frame.pack(); 
frame.setVisible(true); 

或您的JFrame將不顯示來電。

對於ActionListener的代碼,你已經爲[0]字符串數組維度添加如:

cButton.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent ae) { 
      try { 
       MainProgram.main(new String[0]); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
+0

是它的工作原理。謝謝! – Mike 2011-01-23 14:49:16