Как передавать данные между пакетами в 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 и используйте контрольный тест для операции. Но этот вызов должен быть в рамках правила по умолчанию, частного, защищенного и открытого правил для вызова методов. или используйте переменные экземпляра для этого объекта.

Другие вопросы по тегам