Как передавать данные между пакетами в Java?
Я использую версию Eclipse Juno. Использование WindowBuilder для создания графического интерфейса, в котором пользователь вводит число в JTextField, а затем щелкает JButton. Я написал цикл for, чтобы определить, является ли число, введенное пользователем, простым числом. Окно GUI будет отображать вывод в виде строки "Введенное число не является простым числом" . Я собираюсь написать исходный код для графического интерфейса в одном пакете, в то время как класс с циклом for будет в другом пакете. Оба пакета находятся в одном проекте Java.
Мой вопрос заключается в следующем: как передать открытый класс, содержащий цикл, в открытый класс, содержащий исходный код GUI (чтобы GUI мог выплевывать результат цикла)? Кроме этого, мне не нужна помощь в написании кода. Спасибо
Это в ответ на первый ответ:
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;
}
}
3 ответа
Вы не передаете данные между пакетами, вы передаете данные между объектами. Структура пакета имеет очень мало общего с тем, о чем вы спрашиваете. Как правило, для передачи данных между объектами у одного должна быть ссылка на другой, а у получающего данные должен быть открытый метод для получения этих данных.
Для второго класса, существующего в другом пакете, вы также должны импортировать первый класс для использования. Первый класс будет иметь:
package gui;
и второй класс в другом пакете будет иметь что-то вроде:
package gui.otherpackage;
import gui.GUI; //GUI being the name of your first class
В объектно-ориентированном программировании данные принимают форму объекта. Данные находятся в форме объекта с некоторым значением переменных состояния экземпляра в пространстве кучи J V M. Чтобы идентифицировать адрес, где объект находится в памяти, мы используем ссылочную переменную в Java. Таким образом, во время программирования для использования этого объекта мы используем ссылку, которая содержит ссылку на этот объект. Предположим, если A test=new A(); затем тестирование указывает на некоторую память в пространстве кучи с помощью некоторых методов M1...Mn со значениями переменных экземпляров v1....vn объекта класса A. Так что, если вы хотите передать данные между пакетами, создайте ссылку на этот объект в уровень пакета. Так, если объект имеет иерархию уровня пакета, например somepackagename.Test.java, то создайте объект этого Test.java и используйте контрольный тест для операции. Но этот вызов должен быть в рамках правила по умолчанию, частного, защищенного и открытого правил для вызова методов. или используйте переменные экземпляра для этого объекта.