Wywołanie obiektu w innej klasie

0

Witam. Mam następujący problem: robię projekcik pseudo hurtowni z jakimiś częściami grami itp. Problem polega na tym(jest to projekt na zaliczenie), że warstwa klienta musi być oddzielona od warstwy aplikacji. Przeszkadza to w tym, że w klasie GUI, w której jest main i wszystko wykonuje potrzebuje wczytać obiekty z klasy Konsola. Nie wiem jak to zrobić, nie mogę także ich stworzyć od nowa w klasie GUI w tym mainie gdyż właśnie tego nie można zrobić(takie utrudnienie). Proszę o pomoc w jaki sposób mogę właśnie te elementy wywołać z klasy Konsole w klasie GUI i później sobie je pododawać do listy?

 package com.company;

public class Konsola extends Komponent {
    public static void magazynKonsoli() {
        Konsola[] konsola = new Konsola[10];

        Konsola kon = new Konsola("elo",1,1,"elo");

    public String getNazwa{return this.nazwa}
    }

    public static void main(String[] args) {


    }

    public Konsola(String nazwa, int waga, int cena, String producent) {
        super(nazwa, waga, cena, producent);
    }
}

 package com.company;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import javax.swing.event.ListSelectionListener;
import static com.company.Konsola.magazynKonsoli;
/**
 * Created by Przemek on 14.01.2017.
 */
public class GUI {
    private JCheckBox karta;
    private JPanel panel1;
    private JCheckBox gotowka;
    private JTextField platnosc;
    private JTextField komunikaty;
    private JList magazyn;
    private JButton dodaj;
    private JButton usun;
    private JList koszyk;




    public GUI(Komponent kom) {
        komunikaty.setForeground(Color.RED);
        karta.addItemListener(new ItemListener() {
            @Override
            public  void itemStateChanged(ItemEvent e) {
                if(e.getStateChange() == ItemEvent.SELECTED ) {
                    platnosc.setText("Wybrales platnosc kartą");
                    if(kom.platnosc == 1) {
                        komunikaty.setText("Wybierz jeden rodzaj platnosci!");


                    }
                    kom.licznikplus();
                }
                if(e.getStateChange() ==ItemEvent.DESELECTED){
                    kom.licznikminus();
                    komunikaty.setText(" ");
                }
            }
        });
        gotowka.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                if (e.getStateChange() == ItemEvent.SELECTED ) {
                    platnosc.setText("Wybrales platnosc gotowką");
                    if(kom.platnosc == 1){
                        komunikaty.setText("Wybierz jeden rodzaj platnosci!");


                    }
                    kom.licznikplus();
                }
                if(e.getStateChange() ==ItemEvent.DESELECTED){
                    kom.licznikminus();
                    komunikaty.setText(" ");
                }
            }
        });

                Konsola.magazynKonsoli();

        magazyn.setLayoutOrientation(JList.VERTICAL);
        magazyn.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        magazyn.setVisibleRowCount(-1);

        magazyn.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                if (e.getValueIsAdjusting() == false) {

                    if (magazyn.getSelectedIndex() == -1) {

                        dodaj.setEnabled(false);

                    } else {

                        dodaj.setEnabled(true);
                    }
                }
            }
        });

        DefaultListModel dlm = new DefaultListModel();

        magazyn.setModel(dlm);

        dlm.addElement(kom.nazwa);


        koszyk.setLayoutOrientation(JList.VERTICAL);
        koszyk.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        koszyk.setVisibleRowCount(-1);






    }

    public static void main(String[] args) {

        Komponent kom = new Komponent("konsola", 100, 100, "sony");

        JFrame frame = new JFrame("GUI");
        frame.setContentPane(new GUI(kom).panel1);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }


}
0

Nie wiem jak inni ale ja nie rozumiem pytania. Jaki konkretnie masz problem? Możesz pokazać kawałek kodu który nie działa?

0

Dotychczas działa wszystko, chce w klasie GUI odwołać się do obiektów, które stworzyłem w klasie Konsola, tylko nie wiem w jaki sposób. Musze sie do nich odwołać aby wrzucic je w Jliste

1

o_O sposobów jest wiele, ale cały ten twój program jest bez sensu z punktu widzenia "architektury". Nic się tu kupy nie trzyma, no ale klient nasz pan...

  • Możesz w klasie Konsola zrobić metodę która zwraca jakieś obiekty a potem w tej swojej klasie GUI zrobić obiekt Konsola i pobrać te obiekty
  • Możesz też w klasie Konsola mieć statyczna metodę która zwraca jakieś obiekty i w klasie GUI po prostu tą metodę wywołać.
0

To dopiero wstępny szkielet, przerabiam ten program i tak. Ok sprawdze twoje pomysły, dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1