Wypożyczalnia Aut - Swing

0

Cześć,
Piszę wypożyczalnie aut w Swingu w celu nauczenia się i pojawiło się kilka pytań:

  • czy dla każdego dodatkowego okna typu dodanie osoby, dodani auta itd tworze nową klase?
  • czy w przypadku okna dodania osoby tworzę set'ery i get'ery ?
  • mam buttony z obrazkami jak je podpiąć w actionPerformed aby reagowały ?

i jeszcze kilka lecz będą to pytania wynikające z odpowiedzi.

Poniżej zamieszczam kod nie ma go za wiele, lecz nie dawno zacząłem i nie wiem jak ta aplikacja ma wyglądać aby miała ręce i nogi :) z góry dzięki za pomoc.

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Okno extends JPanel implements ActionListener
{   
    private JButton dodaj;
    private JButton dodajosobe;
    private JButton dodajtran;
    private JButton ustawienia;
    private JButton exit;

    private JPanel p1;
    private JPanel p2;
    private JPanel p3;
    private JPanel pCard;

    public Okno()
    {
        super (new BorderLayout());

        p1 = new JPanel();
        p2 = new JPanel(new GridLayout(3,1));
        p3 = new JPanel(new GridLayout(2,2));

        // 1 PANEL
        dodajosobe = new JButton();
        dodajosobe.setBackground(Color.WHITE);
        dodajosobe.setIcon(new ImageIcon("D:\\Java\\WypozyczalniaSamochodów\\grafika\\DODAJ.jpg"));
        dodajosobe.addActionListener(this);
        dodajosobe.setActionCommand("Dodaj osobe");

        dodajtran = new JButton();
        dodajtran.setBackground(Color.WHITE);
        dodajtran.setIcon(new ImageIcon("D:\\Java\\WypozyczalniaSamochodów\\grafika\\TRAN.jpg"));
        dodajtran.addActionListener(this);
        dodajtran.setActionCommand("Dodaj tran");

        dodaj = new JButton();
        dodaj.setBackground(Color.WHITE);
        dodaj.setIcon(new ImageIcon("D:\\Java\\WypozyczalniaSamochodów\\grafika\\AUTO.jpg"));
        dodaj.addActionListener(this);
        dodaj.setActionCommand("Dodaj");

        ustawienia = new JButton();
        ustawienia.setBackground(Color.WHITE);
        ustawienia.setIcon(new ImageIcon("D:\\Java\\WypozyczalniaSamochodów\\grafika\\SETING.jpg"));

        exit = new JButton();
        exit.setBackground(Color.WHITE);
        exit.setIcon(new ImageIcon("D:\\Java\\WypozyczalniaSamochodów\\grafika\\EXIT.jpg"));
        exit.addActionListener(this);
        exit.setActionCommand("Exit");

        p1.add(dodajosobe);
        p1.add(dodaj);
        p1.add(dodajtran);
        p1.add(ustawienia);
        p1.add(exit);

        // 2 PANEL - DODAWANIE OSOB

        p2.add(new JLabel("Imię"));
        p2.add(new JTextField(10));
        p2.add(new JLabel("Nazwisko"));
        p2.add(new JTextField(10));
        p2.add(new JLabel("Pesel"));
        p2.add(new JTextField(20));

        // 3 PANEL - DODAWANIE AUT
        p3.add(new JLabel("Marka"));
        p3.add(new JTextField(10));
        p3.add(new JLabel("Model"));
        p3.add(new JTextField(10));
        p3.add(new JLabel("Rok"));
        p3.add(new JTextField(10));
        p3.add(new JLabel("Ilość koni"));
        p3.add(new JTextField(10));

        //pCard = new JPanel(new CardLayout());

        add(p1 , BorderLayout.WEST);

    }

    @Override
    public void actionPerformed(ActionEvent e) 
    {
        String comand = e.getActionCommand();

        // Obsługa CardLayout
        CardLayout cl = (CardLayout)pCard.getLayout();

    }
}
0

Słabo mi...

  1. public class Okno extends JPanel implements ActionListener jak coś jest okienkiem czy panelem to NIE JEST jednocześnie ActionListenerem. Masz jakis limit na liczbę klas że chcesz wszystko pakować do jednej? Szczególnie że chcesz mieć RÓŻNE akcje dla guziczków. Więc łaskawie stwórz kilka klas implementujących ActionListenera. Po jednej dla giuzika.
  2. Ładny copy-paste z tymi guzikami. Rozumiem że nie dało się stworzyć metody która tworzy guzik a jako parametry dostaje stringa z labelem i ścieżkę do pliku? A jak będziesz chciał nagle zmienić tło guzików z białego na różowe to będziesz zmieniał w 100 miejscach? Brawo.

czy dla każdego dodatkowego okna typu dodanie osoby, dodani auta itd tworze nową klase?

Nie musisz, ale będzie czytelnie

czy w przypadku okna dodania osoby tworzę set'ery i get'ery ?

Nie rozumiem pytania. Przeczytaj moze co to MVC i MVP. Guzik "dodaj osobę" powinien delegować akcję do kontrolera/prezentera i przekazywać mu jakieś DTO z danymi.

mam buttony z obrazkami jak je podpiąć w actionPerformed aby reagowały ?

Stworzyć action listenera i go podpiąć.

0

Ok, dzięki za odp.Mógłbyś powiedzieć mi jeszcze jak ma wyglądać klasa z ActionListenerem dla np. dodawania osoby chodzi mi o szkielet.

0

Zakładając że robisz to porządnie to np. tak:

public class AddUserAction implements ActionListener{

    private final Presenter presenter;
    private final FormPanel formPanel;

    public AddUserAction(Presenter presenter, FormPanel formPanel){
        this.presenter = presenter;
        this.formPanel = formPanel;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        presenter.addUser(formPanel.getUserData());
    }
}

Gdzie oczywiscie Presenter deleguje akcję do jakiegoś serwisu w warstwie logiki.

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