Simple Reminder - Swing

0

Czesc !

Mowia kto nie pyta ten nie bladzi a ze strasznie bladze to zapytam . . Chcialbym stworzyc prosty reminder w swing. Ale kompletnie nie wiem od ktorej strony to ugryzc , chcialbmy przy okazji sie nauczyc o multi-threading i wykorzystaniu date i time . Do tej pory nie mialem z tym za bardzo stycznosci .

W zasadzie to nawet nie wiem jak stworzyc GUI. Myslalem nad menu w ktorym jest opcja dodaj reminder i usun reminder. Po kliknieciu w menu pojawia sie okienko do stworzenia remindera. Ale gdzie wyswietlic te remindery ? textArea odpada bo najwyzej wyswietle nazwe i czas remindera. Chcialbym zeby mozna bylo kliknac na remindera ktory sie gdzies wyswietli i podgladnac mozna czas stworzenia i czas w ktorym reminder ma zadzialac.

Dzieki za pomoc

0

Zacznij od ściągnięcia IDĘ. Jeżeli nie masz pojęcia do dobry będzie NetBeans w którym GUI sobie wyklikasz. Jednak bez przynajmniej podstawowej wiedzy o Javie/Swingu raczej nic nie ruszysz.

0

Wiedze na temat jezyka mam w swingu kilku projektow tez robilem ale akurat z tym nie wiem jak sobie poradzic. W pracy gdzie sie tworzy aplikacje rowniez korzysta sie z IDE takich jak NetBeans gdzie GUI sie nie koduje tylko wyklikuje ? A wiec po co te tutoriale swinga ? Zeby polapac z czym to sie je ? Nie lepiej robic takie aplikacje w eclipsie nie idac na latwizne ? Nie powiem ze kodowanie 1000 razy tego samego jest spoko ale jestem ciekaw twojej opinii.

0

Napisałem co najmniej kilkadziesiąt programów w Swingu i żadnego nie wyklikałem (NetBeansa nie używam). Mój prywatny reminder jest uruchamiany w autostarcie. W głównym oknie nie ma nic ciekawego main.png, do wyświetlania listy zdarzeń korzystam z JTable week.png, jest jeszcze formularz edycji edition.png.
Dane przechowywane są w plikach tekstowych, można je zatem edytować czymkolwiek (notepad++ np.), odpadają wtedy kontrole poprawności.

0

jak wyswietlic nowy panel klikajac na przycisk z menu ? Stworzyc nowa klase z innym panelem ,setVisible wystarczy ? i dzieki bardzo.

0

Można tworzyć wszystkie okna od razu, ja rozwiązałem tak (tworzę okno dopiero wtedy, kiedy jest potrzebne):

public void actionPerformed(ActionEvent ae)
{   
    if(weekWindow == null)
    {
        weekWindow = new WeekWindow(this);
    }
    weekWindow.setVisible(true);
    return;
}

weekWindow dziedziczy po JFrame, w konstruktorze nie ma setVisible(true).

0

przy okazji zapytam jak rozwiazujesz przypisanie metody actionPerformed do menu i dlaczego przekazujesz do klasy weekWindow this ten actionPerformed jest tworzony w klasie glownego okna ? skoro tak to co sie pozniej dzieje z przekazanym this w klasie weekWidndow ? I jak dodawac kolejne eventy skoro konstruktor JTable wykorzystuje tablice 3D .dzieki za pomoc

0
  1. W moim kodzie, główna klasa była kombajnem. W szczególności była ActionListenerem, dlatego new WeekWindow(this). Można do pozycji menu podpiąć jako listenera anonimową klasę wewnętrzną, wtedy będzie new WeekWindow(Remainder.this).
  2. Główna klasa tworzy listę komunikatów i wyświetla komuniukaty. this w klasie WeekWindow jest wykorzystywany do modyfikacji listy komunikatów.
  3. O jakiej tablicy Ty mówisz? W klasie WeekWindow
WeekModel model = new WeekModel();
readEvents(); //odczytuje w pętli plik tekstowy z przypomnieniami, dla każdego przypomnienia message model.add(message);
JTable table = new JTable(model);</code=java>
Klasa WeekModel wygląda tak:
```java
import java.util.ArrayList;

import javax.swing.table.AbstractTableModel;

public class WeekModel extends AbstractTableModel
{
	private String[] columnNames = {"Treść","Dzień","Ile dni przed","Ile razy","Odstęp"};
	private Class<?>[] columnClasses = {String.class,Integer.class,Integer.class,Integer.class,Integer.class};
	private ArrayList<WeekEvent> dane = new ArrayList<WeekEvent>();
	//------------------------
	public void add(WeekEvent msg)
	{
		dane.add(msg);
	}
	//------------------------
	public void set(int index,WeekEvent msg) 
	{
		dane.set(index,msg);
	}
	//------------------------
	public void delete(int index)
	{
		dane.remove(index);
	}	
    //------------------------
	public int getColumnCount()
	{
		return columnNames.length;
	}
	//------------------------
	public String getColumnName(int col)
	{
		return columnNames[col];
	}
	//------------------------
	public Class<?> getColumnClass(int col)
	{
		return columnClasses[col];
	}	
    //------------------------
	public int getRowCount()
	{
		return dane.size();
	}
    //------------------------
	public Object getValueAt(int row,int col)
	{
		WeekEvent msg = dane.get(row);
		switch(col)
		{
		case 0:
			return msg.getMsg();			
		case 1:
		    return msg.getLastDay();
		case 2:
		    return msg.getHowManyDays();
		case 3:
			return msg.getHowMany();		    
		case 4:
			return msg.getDelay();
		}		
		return null;
	}
	//------------------------
	public ArrayList<WeekEvent> getDane()
	{
		return dane;
	}	
}

Klasę WeekEvent zaprojektuj sam.

0

Wywnioskowałem ze chcesz nauczyć sie Javy/Swinga. Możesz sobie wyklikać GUI i zrobić analizę kodu. Ze swojego doświadczenia jako Javociec (ok. 8 lat) wynika ze NetBeansa bardzo <ort>rzadko</ort> sie korzysta. Głownie IntrJ albo Eclipse (lub serwery bazujące na nim np WebSphere)

0

hmmmm ... mam juz GUI i funkcjonuje to jako tako . Teraz jedyny problem to jak powiazac event z czasem tak zeby o danej godzinie i danego dnia bylo jakies proste beep. Co do tego wykorzytac ?

0

Najprościej to Timer.

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