2012-06-27 35 views
0

我有一個可用的JFrame GUI和我的JPanel全部設置。我試圖結合兩個不同的代碼,我已經設置和工作。第一個代碼是在JPanel中的toUpperCase的文本轉換器,第二個是Prime素數(不是素數)代碼。我一直試圖讓JPanel爲用戶輸入的任何數字提供Prime因素的輸出。下面是我....將素數因子代碼合併到JPanel中 - Java

的JPanel代碼

public class Prime extends JPanel { 
    private JLabel formattedText; 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.getContentPane().add(new Prime()); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     frame.setVisible(true); 
    } 

    public Prime(){ 
     setLayout(new BoxLayout(this,BoxLayout.Y_AXIS)); 
     JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(640,100)); 
     JLabel label = new JLabel("Enter a number to check for it's prime number(s)."); 
     JTextField field = new JTextField("0"); 
     field.addActionListener(new FieldListener()); 
     add(label); 
     add(field); 
     add(panel); 


     panel = new JPanel(); panel.setPreferredSize(new Dimension(640,380)); 
     formattedText = new JLabel(); 
     panel.add(formattedText); 
     add(panel); 
    } 

    private class FieldListener implements ActionListener { 
     public void actionPerformed(ActionEvent event) { 
      JTextField field = (JTextField)event.getSource(); 
       formattedText.setText(field.getText().toUpperCase()); // I know this is wrong... I can't figure out what to change here to get it to pull the code below. 
      } 
    } 
    public class PrimeFactors { 

    } 
} 

,這裏是首要因素代碼

public class Temp { 

    static int primeCheck = 1; 

    public static void main(String[] args) { 
     System.out.println("Enter a number whose Prime factors are desired: "); 
     Scanner numS = new Scanner(System.in); 
     int numPriFac = 0; 
     if (numS.hasNextInt()) { 
      numPriFac = numS.nextInt(); 
     } 

     System.out.println("All the Prime Factors of the entered number are:"); 

     for (int tap = 1; tap <= numPriFac; tap++) { 
      if (numPriFac % tap == 0) { 
       for (int primeTest = 2; primeTest < tap; primeTest++) { 
        if (tap % primeTest == 0) { 
         primeCheck = 1; 
         break; 
        } else { 
         primeCheck = 0; 
        } 
       } 
       if (primeCheck == 0 || tap == 2) { 
        System.out.print(tap + " "); 
       } 
      } 
     } 
    } 
} 

,在底部最後PrimeFactors代碼只是一些遺留下來的時候我試圖讓自己的工作。非常感謝您的幫助!

回答

0

第1步:更改線路

public static void main(String[] args) { 

喜歡的東西

public static String primeFactors(int number) { 

,使該方法使用,而不是要求輸入提供的參數number

第2步:創建primeFactors一個StringBuilder和更改所有呼叫System.out.print來調用stringBuilder.append()

第3步:設置stringBuilder.toString()作爲返回值primeFactors

第4步:更改線路

formattedText.setText(field.getText().toUpperCase()); 

formattedText.setText(Temp.primeFactors(Integer.parseInt(field.getText()))); 

我會離開錯誤處理併爲您輸入安全防範。