Blog (9)
Komentarze (7)
Recenzje (0)

Tworzymy programy okienowe w JAVA z Eclipse+visualswing4eclipse. Część 2

@skrzeczol755Tworzymy programy okienowe w JAVA z Eclipse+visualswing4eclipse. Część 226.06.2012 00:05

To drugi (i ostatni) wpis z tej serii. Powód: dzięki jednemu z komentarzy dowiedziałem się o jeszcze lepszym sposobie na projektowanie UI w Eclipse bez konieczności płacenia twórcom wtyczki, a mianowicie WindowBuilder. Skupimy się w nim na wywoływaniu dodatkowych okien, np. powiadomień. Zaczynamy!

Główne okno programu

Robimy sobie taki projekt interfejsu jak poniżej:

Okno główne programu
Okno główne programu

Od razu sugeruje nam, że program nie będzie skomplikowany, bo nie jest istotą tego przykładu zrobienie „programu do wszystkiego”. Do tego podczas rozciągania/zwężania elementów mogą pojawiać się przerywane linie przy brzegach lub na środku, co zakotwicza widżet w układzie okna — element będzie na stałym miejscu niezależnie od rozmiaru okna. Może się również rozciągać, aby się przystosować do nowego rozmiaru okna.

Sam program ma robić napisy wspak, tak więc program ten nie będzie skomplikowany, chociaż zrobimy sobie model w postaci klasy Napis.

Mając już interfejs i model, utworzymy sobie do każdego z przycisków zdarzenie mouseClicked

Dla jButton0:


private void jButton0MouseMouseClicked(MouseEvent event) {	
String texcik= new Napis(jTextField0.getText()).getOdwrocony(); //odwrócony tekst bez klasycznego tworzenia obiektu
jTextField1.setText(texcik);
}

Dla jButton1:


jTextField0.setText("");
jTextField1.setText("");

Dla jButton2:


new AboutDialog().setVisible(true);

Dorabiamy model

Zadaniem klasy Napis jest reprezentacja napisu oraz odwrócenie go. Dla utrzymania minimalizmu, będzie składać się z dwóch konstruktorów, dwóch pól i dwóch metod, ale publiczne będą dwa konstruktory i jedna metoda. Zaczynamy!

Oto szkielet klasy.


public class Napis
{

}

Najpierw wypełnimy go prywatnymi polami: normalny i wspak. Obydwa typu String.


public class Napis
{
private String normalny;
private String wspak;
}

Teraz utworzymy dwa publiczne konstruktory: bezargumentowy i jednoargumentowy. Tak będzie to wyglądać wewnątrz klasy:


public class Napis
{
private String normalny;
private String wspak;

public Napis()
{
normalny="";
wspak="";
}

public Napis(String wejscie)
{
normalny=wejscie;
wspak="";
}
}

A teraz utworzymy prywatną metodę odwroc() i wstawimy ją za konstruktory (ale wewnątrz klasy). Wygląda ona tak:

private void odwroc()
{
int len = normalny.length()-1;
char[] aarray = new char[len];
	    
for(int j=0; j<len; i++)
{
aarray[j] = normalny.charAt(len-j);
}
odwrocony = new String(aarray);
}

Jak już mamy metodę odwracającą napis, to zrobimy sobie gettera (taką metodę zapewniającą pośredni dostęp do pól, ale tylko do odczytu), którego zadaniem jest dobranie się do pola odwrocony po to, aby odczytać odwrócony napis. Jego konstrukcja jest następująca:


public String getOdwrocony()
{
odwroc();
return odwrocony;
}

Okno z informacjami o programie

Okno to będzie reprezentowane przez klasę AboutDialog i będzie dziedziczyć po klasie JDialog, tak więc utworzymy klasę odpowiadającą oknu dialogowemu. Będzie wyglądać tak:

Okno dialogowe
Okno dialogowe

Do przycisku dodamy obsługę zdarzenia mouseClicked:


private void jButton0MouseMouseClicked(MouseEvent event) {
	this.setVisible(false);
    }

To spowoduje, że okno dialogowe zostanie zamknięte. Okno dialogowe będzie modalne (do initComponents() dodamy setModal(true)).

Pole tekstowe będzie wypełnione zawartością widoczną na ekranie (poniżej znajduje się kod dotyczący tego elementu):


private JTextArea getJTextArea0() {
    	if (jTextArea0 == null) {
    		jTextArea0 = new JTextArea();
    		jTextArea0.setEditable(false);
    		jTextArea0.setText("Prosty program robiący napisy wspak.");
    		jTextArea0.setAutoscrolls(true);
    		jTextArea0.addMouseListener(new MouseAdapter() {
    
    			public void mousePressed(MouseEvent event) {
    				jTextArea0MouseMousePressed(event);
    			}
    		});
    	}
    	return jTextArea0;
    }

Następnie dodamy do pola tekstowego zdarzenie mouseEntered:


private void jTextArea0MouseMousePressed(MouseEvent event) {
	 easterEgg();
    }

Oraz zdarzenie mouseExited:


private void jTextArea0MouseMousePressed(MouseEvent event) {
	jTextArea0.setText("Prosty program robiący napisy wspak.");
    }

Robimy Easter Egga

Nasz Easter Egg ma być niespodzianką, do której dostęp nie będzie taki oczywisty. Do tego będzie takim szczególnym oknem ze szczególną zawartością. Będzie reprezentować go metoda easterEgg(), którą dodamy do klasy AboutDialog. Jej celem jest zmiana napisu na „Are you as creepy as creeper?”.

A oto cała metoda:


private void easterEgg()
{
jTextArea0.setText("Are you as creepy as creeper?");
}

Podsumowanie

To już koniec przygody z tą wtyczką, bo przeniesiemy się na coś lepszego :D Nauczyliśmy się tworzyć programy z oknami dialogowymi oraz zamykania okien.

Bardziej ciekawskich odsyłam do strony projektu podanej w poprzednim wpisie z tej tematyki oraz do własnych eksperymentów albo do przypatrzenia się generowanemu kodowi, dzięki któremu nauczymy się posługiwania klasami z pakietu javax.Swing.

I na osłodę demonstracja działania programu [youtube=http://www.youtube.com/watch?v=u0EhqpQBU3Q]

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.