Wypowiedzi
-
Nie jestem pewien ale opcja ZeroFill powinna tutaj pomóc
-
Dziękuję za podpowiedź :)
-
Dziękuję bardzo za odpowiedź. Książka już zamówiona :)
Wzorców projektowych wcześniej nie dotykałem wcale. Ciekawe na ile zmieni to moje spojrzenie :) -
Udało mi się znaleźć rozwiązanie przez użycie metody statycznej. Czy jest to odpowiednia droga, czy są "bardziej poprawne" sposoby?
-
Tworzę programik testowy i jak zwykle zaciąłem się na samym początku
są 3 klasy - każda klasa w osobnym pliku.
1)Gui - z założenia ma tam być tylko interfejs użytkownika (na razie ma tylko przekazywać trzy dane x, y, z)
2)Mechanika - klasa zawierająca dane oraz operacje na nich (na chwilę obecną ma przechowywać dane x i y oraz obliczyć z)
3) Start - klasa startująca cały program i tutaj tworzone mają być obiekty.
Zakładam, że program będzie mógł mieć więcej niż 1-2 klasy i chodzi o to, jak sterować przepływem danych.
Przesył danych między startem a mechaniką / gui nie stanowi problemu. Problem pojawia się pomiędzy gui a mechaniką. Jak można sobie z tym fantem poprawnie poradzić?
Z góry dziękuję za pomoc :)
klasa Start
package okna_test;
public class Start
{
public static void main(String[] args)
{
Mechanika mechanika=new Mechanika();
GUI gui=new GUI();
gui.wynik();
}
}
klasa Mechanika
package okna_test;
public class Mechanika
{
private int x;
private int y;
private int z;
public Mechanika() //konstruktor
{
x=0;
y=0;
z=0;
}
public int getz() //getter
{
return z=x+y;
}
public void setx(int x) // setter
{
this.x=x;
}
public void sety(int y) //setter
{
this.y=y;
}
}
klasa GUI
package okna_test;
public class GUI
{
public int wynik()
{
mechanika.setx(10);
mechanika.sety(5);
return mechanika.getz();
}
}
-
Dziękuję bardzo za informacje :)
Odnośnie osobnych tabel - wydaje mi się, że jest to o tyle dobre rozwiązanie, że nie generuje dodatkowych informacji ( NULL), ułatwi sortowanie wg zadanego kryterium oraz przy wyświetleniu całej listy też nie powinno być problemu.Ten post został edytowany przez Autora dnia 10.10.17 o godzinie 07:16 -
nie jestem pewien czy się do końca rozumiemy.
zasadniczo zadaniem tabeli terminarz jest zbiór informacji o czasie, jednym wydarzeniu i kogo/czego ma to wydarzenie się tyczyć.
problem polega na tym, że informacje o tym kog/czego wydarzenie ma się tyczyć jest rozbite na kilka tabel.
idealnie struktura terminarza powinna wyglądać tak:
*id
*data (data w której miałoby nastąpić zdarzenie)
*id_zdarzenia (id z listy dostępnych zdarzeń)
*kto_co (kogo lub czego będzie dotyczyło wydarzenie)
*id_osoby (lub) samochodu (lub) budynku
problemem właśnie jest to, że interpretacja danych w jednym polu jest zależna od danych w innym polu.
czyli ta sama wartość (powiedzmy nr 3 ) będzie zidentyfikowane jako "kowalski", jeżeli w polu kto_co będzie "personel", lub jako fiat, jeżeli w polu kto_co będzie "samochód"
mówiąc innymi słowy potrzeba stworzyć odpowiednik programowego switcha. -
Struktura tabel z "podstawowymi danymi" jest niestety odgórnie ustalona (czyli tabele pracownicy / budynki / samochody jest nie do ruszenia).
Tabela terminarz ma narzucone wymagania (musi tam znajdować się informacja o dacie, rodzaju wydarzenia oraz podmiocie tego wydarzenia - czyli kiedy ma nastąpić wydarzenie, jaki będzie to rodzaj wydarzenia oraz kogo/czego to wydarzenie będzie tyczyło). Mogą być tutaj dołożone dodatkowe kolumny.
Mogą być tworzone tabele przejściowe. Zawartość dowolna, przy założeniu, że nie będą one nadmiarowe.
Zapomniałem nadmienić, że jest też tabela ZDARZENIE (innymi słowy wybór zdarzenia nie jest podawany z ręki tylko wybierany z listy). Nie wiem czy jest to istotna informacja. -
Staram się dojść do ładu z jedną z relacji w bazie ale niestety bezskutecznie.
Danych jest kilka tabel:
-BUDYNKI
-SAMOCHODY
-PERSONEL
-TERMINARZ
W tabeli budynki / samochody / personel ma znajdować się lista (w budynkach - lista budynków, w samochodach - samochodów a w personelu - personelu).
W terminarzu mają być zapisywane wydarzenia tyczące się budynków/samochodów/personelu. Jak można stworzyć relację która pozwoli wybierać pożądaną tabelę?
jedyny pomysł na jaki wpadłem to:
tabela TERMINARZ:
*data (określa datę wydarzenia)
*zdarzenie (określa wydarzenie)
*wybor (określa które pole będzie wybrane, np samochody)
*budynki (jeżeli wybór określi tą pozycję wpisane tutaj będzie id budynku)
*samochody (analogicznie, jak powyżej ale z samochodami)
*personel (analogicznie, jak powyżej ale z personelem)
Przykładowy wpis:
05.12.2018 / spotkanie / personel / NULL / NULL / 3
06.12.2018 / przegląd techniczny / samochody / NULL / 2 / NULL
czyli:
05.12.2018 ma odbyć się spotkanie z Panem Janem Kowalskim (członek personelu, numer id w bazie - 3)
06.12.2018 ma odbyć się przegląd techniczny opla (samochód, numer id w bazie - 2)
czy istnieje jakieś bardziej optymalne / lepsze rozwiązanie tej sprawy?
Z góry dziękuję za pomoc. -
Witam serdecznie.
Mam problem z podziałem informacji na klasy i niezbyt wiem jak do sprawy prawidłowo podejść. Z założenia każda klasa ma być wyspecjalizowana w robieniu pewnej rzeczy.
Przykład - program pobierający od użytkownika imię, nazwisko, kraj* i język* oraz to wyświetlający.
1. klasa z danymi czyli posiadająca pola imie, nazwisko, kraj, jezyk + setery i getery
2. klasa GuiGlowne jakoś to wszystko wyświetlająca (przykładowo w tabeli).
3. chciałbym aby możliwe kraje i języki były wcześniej zdefiniowane (przykładowo pobierane z jakiegoś pliku zewnętrznego i była możliwość dodania / modyfikacji). Innymi słowy czy potrzebuję dodatkowej klasy, która będzie zawierała dane informacje w listach (lista krajów/języków) oraz funkcje umożliwiające pobranie / modyfikację danych wpisów, czy będzie to zadanie klasy GuiGlowne?
4. dodanie wpisu miałoby pojawiać się w dodatkowym oknie (w głównym gui klikam przycisk dodaj, wyskakuje dodatkowe okno). w oknie miałoby być pole do wpisu imienia i nazwiska oraz dwie listy rozwijane z podanymi wcześniej krajami i językami. Czy to okno powinno być osobną klasą czy częścią GuiGlowne?
5. Czy potrzebuję jakiejś głównej klasy to wszystko łączącej, czy któraś z powyższych będzie spełniała to zadanie?
Z góry dziękuję za informację :) -
Dziękuję bardzo za namiary. :)
-
Poszukaj, czy nie jesteś w zasięgu jakiejś sieci radiowej. Taki dostęp do mediów ma tendencje do "strzelania fochów" przy złej pogodzie, ale lepsze to, niż nic.
-
Witam serdecznie,
Poszukuję solidnej (bardzo ważne!) firmy remontowej. Chodzi o ponowne wstawienie okien, wymianę kaloryferów, drzwi wejściowych i kilku prac związanych z elektryką. Gdzie najlepiej skierować swoje kroki?
Z góry dziękuję za informacje. -
Dziękuję za informacje. Do tej pory walczyłem z prostymi programami ograniczającymi się do jednej klasy, bez GUI. Teraz nie dość, że program posiada jakieś GUI to jeszcze jest rozbity na kilka klas. Koncepcja na papierze wyglądała dość sensownie. Po zderzeniu z brutalną rzeczywistością straciła nieco uroku. Wychodzi na to, że materiały z których korzystałem nie są "najwyższych lotów". Będę musiał koncepcję zrewidować i wprowadzić pewne zmiany. Dziękuję za pomoc :)
-
Po raz kolejny potrzebowałbym pomocy z tabelą. Powyższy program rozszerzył się o dodawanie i edycję. Problem polega na tym, że wszystko ma być w osobnych klasach.
*Lista wszystkich samochodów w klasie Start.
*Wyświetlenie listy w klasie GuiGlowne.
*Dodawanie do listy w klasie GuiDodawanie.
*Edycja pozycji listy w klasie GuiEdycja.
Jak to ze sobą połączyć, żeby dostęp do tej samej listy był w kilku klasach a listę można było obsługiwać komendami z klasy ModelDanych?
link do całego projektu -
Dziękuję bardzo za pomoc :)
-
Zacząłem walkę z modelem tabeli przy czym nie do końca ogarniam działanie. Program miał wyświetlać prostą tabelę samochodów (gui wyklikane w netbeansie).
Kierując się instrukcją stworzyłem bazowy model danych:
public abstract class ModelDanych <dane> extends AbstractTableModel
{
private List<String> naglowki;
private List<dane> wiersze;
public ModelDanych(List<dane> daneList, String[] kolumny)
{
wiersze=new ArrayList<dane>(daneList);
naglowki= Arrays.asList(kolumny);
}
@Override
public int getColumnCount()
{
return naglowki.size();
}
@Override
public int getRowCount()
{
return wiersze.size();
}
@Override
public String getColumnName(int kolumna)
{
return naglowki.get(kolumna);
}
@Override
public Class<?> getColumnClass(int c)
{
return getValueAt(0,c).getClass();
}
public dane getRow(int wiersz)
{
return wiersze.get(wiersz);
}
public void addRow(dane nowy)
{
wiersze.add(nowy);
this.fireTableDataChanged();
}
}
Następnie model który będzie wyświetlał dane, które będą zawarte w tabeli:
public class ModelSamochody extends ModelDanych<Samochody>
{
public ModelSamochody(List<Samochody> samochodyList, String[] kolumny)
{
super(samochodyList, kolumny);
}
@Override
public Object getValueAt(int wiersz, int kolumna)
{
Samochody samochod=getRow(wiersz);
switch(kolumna)
{
case 0 : return samochod.getMarka();
case 1 : return samochod.getModel();
case 2 : return samochod.getRocznik();
case 3 : return samochod.getCena();
case 4 : return samochod.getAdres();
default: return null;
}
}
@Override
public void setValueAt(Object wartosc, int wiersz, int kolumna)
{
Samochody samochod=getRow(wiersz);
switch(kolumna)
{
case 0 : samochod.setMarka ((String) wartosc); break;
case 1 : samochod.setModel ((String) wartosc); break;
case 2 : samochod.setRocznik((int) wartosc); break;
case 3 : samochod.setCena ((int) wartosc); break;
case 4 : samochod.setAdres ((Adres) wartosc); break;
default: break;
}
this.fireTableCellUpdated(wiersz, kolumna);
}
}
Domyślny kod tabeli z netbeansa:
tabela = new javax.swing.JTable();
tabela.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null, null, null},
{null, null, null, null, null, null},
{null, null, null, null, null, null},
{null, null, null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4", "Title 5", "Title 6"
}
));
tabela.getTableHeader().setReorderingAllowed(false);
jScrollPane1.setViewportView(tabela);
Wszystkie rzeczy są w osobnych plikach. Moje pytanie brzmi jak połączyć stworzony przeze mnie model tabeli z tabelą wyklikaną w netbeansie (o ile to co zrobiłem jest poprawne)?
Z góry dziękuję za pomoc. -
Dziękuję bardzo za informacje.
-
Podczas mojej nierównej walki z php natknąłem się na kolejny problem, z którym nie potrafię sobie poradzić:
Posiadam plik php zawierający <FORM>. W tym samym pliku pobieram dane z formularza za pomocą filter_input(INPUT_POST). W zależności od wyniku program ma podjąć odpowiednie działanie. Problem polega na tym, że program nie czeka na wysłanie (<input type='submit'>) tylko od razu przechodzi do analizy warunku. Czy jest jakaś możliwość, żeby zmusić program do tego aby faktycznie poczekał aż we formularzu pojawią się odpowiednie dane? -
Dziękuję bardzo za tak szybką odpowiedź :)