2012-12-03 46 views
2

我使用Eclipse版本的Juno。使用WindowBuilder創建一個GUI,用戶在其中輸入一個數字到JTextField中,然後點擊一個JButton。我寫了一個for循環來確定用戶輸入的數字是否是一個素數。然後,GUI窗口將顯示「輸入的數字不是質數」的輸出。我將在一個包內寫入GUI的源代碼,而帶for循環的類將位於另一個包中。這兩個軟件包駐留在同一個Java項目中。我的問題是這樣的:我如何將包含循環的公共類傳遞給包含GUI源代碼的公共類(以便GUI可以吐出循環的結果)?除此之外,我不需要編寫代碼的任何幫助。由於如何在Java包中傳遞數據?

這是在響應於第一答案:

package gui; 

import java.awt.EventQueue; 

import javax.swing.*; 

public class GUI { 

    private JFrame frame; 
    private JTextField txtNumber; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        GUI window = new GUI(); 
        window.frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the application. 
    */ 
    public GUI() { 
     initialize(); 
    } 

    /** 
    * Initialize the contents of the frame. 
    */ 
    private void initialize() { 
     frame = new JFrame(); 
     frame.setBounds(100, 100, 360, 286); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setLayout(null); 

     txtNumber = new JTextField(); 
     txtNumber.setBounds(134, 13, 182, 22); 
     frame.getContentPane().add(txtNumber); 
     txtNumber.setColumns(10); 

     JLabel lblPrompt = new JLabel("Enter a number"); 
     lblPrompt.setBounds(25, 16, 97, 16); 
     frame.getContentPane().add(lblPrompt); 

     JButton btnOK = new JButton("OK"); 
     btnOK.setBounds(208, 196, 97, 25); 
     frame.getContentPane().add(btnOK); 


    } 
} 

package guiDataProcessing; 

public class GUIProcessPrime { 
    //A loop that checks whether a number is or is not a prime number 
    boolean IsOrIsnotPrime(int num) { 
     for(int i=2;2*i<num;i++) { 
      if(num%i==0) 
       return false; 
     } 
     return true; 
    } 
} 
+0

向我們展示您的代碼 - 如果沒有查看代碼的上下文很難提供幫助。 –

+0

您可以將「engine」/「for-loop」實現作爲構造函數的一部分或通過GUI中的「setter」傳遞。確保你已經正確設置了'import'語句,這樣GUI就可以看到其他包中的類 – MadProgrammer

+0

@MadProgrammer這就是我首先想到的。我試圖去擁有一個空白的JTextArea的方式,只有當按下JButton並且循環執行它的計算時才顯示文本。 – user1871246

回答

0

你不包之間傳遞數據,傳遞對象之間的數據。包裝結構與你所詢問的內容很少有關。通常,爲了在對象之間傳遞數據,必須有對另一個對象的引用,並且接收數據的對象必須具有用於接收該數據的公共方法。

+0

謝謝,這是有道理的。我還沒有特別擅長編程,所以我的經驗深度很淺。我以前從未接受過這樣的設計指南。 – user1871246

0

對於另一個包中存在的第二個類,您還必須導入第一個類以供使用。第一類將有:

package gui; 

,並在其他包中的第二類將有類似:

package gui.otherpackage; 
import gui.GUI; //GUI being the name of your first class 
0

在面向對象的編程數據佔用object.The數據的形式駐留在形式在JV M的堆空間中,爲了標識對象駐留在內存中的地址,我們在java中使用了引用變量。因此,在編程中使用該對象時,我們使用引用來保存對該對象的引用。假設,如果 A test = new A();然後用一些方法測試指向堆空間中的某些內存M1 ... Mn帶有實例變量值v1 .... vn的類對象A.因此,如果要在包之間傳遞數據,則在該對象內創建對該對象的引用因此,如果對象具有像somepackagename.Test.java這樣的包級別層次結構,則創建該Test.java的對象並使用引用測試進行操作。但是,該調用應該在默認,私有,受保護和公共規則內以調用方法或者將實例變量用於該對象。