PO Graficzny interfejs użytkownika - ćwiczenia: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 291: | Linia 291: | ||
'''public''' '''void''' run() { | '''public''' '''void''' run() { | ||
'''new''' Zad5(); | '''new''' Zad5(); | ||
} | |||
}); | |||
} | |||
} | |||
</div> | |||
</div>}} | |||
== Zadanie 6 == | |||
Rozszerz klasę ''Dodawanie'' o możliwość zmiany działania na mnożenie. Niech wybór działania będzie możliwy przy pomocy przycisku combo (''JComboBox''). Niech wynik będzie obliczany zarówno, gdy zostanie zaakceptowana wartość, z któregoś z pól oraz gdy zostanie zmienione działanie. Niech zawartość pól tekstowych będzie wyśrodkowana do prawej. | |||
{| border="1" | |||
|+ Podgląd działającego rozwiązania | |||
! Archiwum JAR !! Applet | |||
|- | |||
| Żeby uruchomić przykład [[media:PO_GUI_Zad6.jar|Po_GUI_Zad6.jar]] ściągnij najpierw archiwum jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. || <applet code="applet.Zad6Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet> | |||
|} | |||
{{rozwiazanie| kod ||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none"> | |||
'''import''' java.awt.*; | |||
'''import''' java.awt.event.*; | |||
'''import''' javax.swing.*; | |||
'''public''' '''class''' Zad6 '''extends''' JFrame { | |||
JFrame okno = '''this'''; | |||
JTextField wynik = '''new''' JTextField(9); | |||
JTextField pole1 = '''new''' JTextField("1",9); | |||
JTextField pole2 = '''new''' JTextField("2",9); | |||
JComboBox działanie = '''new''' JComboBox(); | |||
'''public''' '''void''' licz() { | |||
'''try''' { | |||
String dz = (String) działanie.getSelectedItem(); | |||
Integer w; | |||
'''if''' (dz.equals("+")) | |||
w = Integer.parseInt(pole1.getText()) + Integer.parseInt(pole2.getText()); | |||
'''else''' | |||
w = Integer.parseInt(pole1.getText()) * Integer.parseInt(pole2.getText()); | |||
wynik.setText(w.toString()); | |||
} '''catch''' (NumberFormatException ex) { | |||
wynik.setText("Błąd"); | |||
} | |||
} | |||
//do obsługi zdarzeń często używane są anonimowe klasy wewnętrzne | |||
//jeden egezmplarz będzie dzielony przez oba pola | |||
ActionListener sumowanie = '''new''' ActionListener() { | |||
'''public''' '''void''' actionPerformed(ActionEvent ev) { | |||
licz(); | |||
} | |||
}; | |||
Zad6() { | |||
'''super'''("Okno ZliczanieKliknięć"); | |||
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | |||
JPanel panel = '''new''' JPanel(); | |||
panel.setLayout('''new''' FlowLayout()); | |||
panel.add(pole1); | |||
pole1.addActionListener(sumowanie); | |||
pole1.setHorizontalAlignment(JTextField.RIGHT); | |||
działanie.addItem("+"); | |||
działanie.addItem("*"); | |||
działanie.addActionListener('''new''' ActionListener() { | |||
'''public''' '''void''' actionPerformed(ActionEvent e) { | |||
licz(); | |||
} | |||
}); | |||
panel.add(działanie); | |||
panel.add(pole2); | |||
pole2.addActionListener(sumowanie); | |||
pole2.setHorizontalAlignment(JTextField.RIGHT); | |||
panel.add('''new''' JLabel("=")); | |||
wynik.setEditable('''false'''); | |||
panel.add(wynik); | |||
//puste obramowanie odsuwa komponenty od krawędzi | |||
panel.setBorder(BorderFactory.createEmptyBorder(30,15,30,15)); | |||
add(panel); | |||
setSize(300,150); | |||
setVisible('''true'''); | |||
} | |||
'''public''' '''static''' '''void''' main(String[] args) { | |||
//aby uniknąć zakleszczeń, tworzenie GUI zawsze zlecamy dla wątku obsługi zdarzeń | |||
javax.swing.SwingUtilities.invokeLater('''new''' Runnable() { | |||
'''public''' '''void''' run() { | |||
'''new''' Zad6(); | |||
} | } | ||
}); | }); |
Wersja z 04:35, 31 sie 2006
Zadanie 1
W klasie WitajŚwiecie umieść w oknie głównym drugą etykietę z tekstem. Użyj w tym celu bezparametrowej metody add(). Czemu obie etykiety nie są widoczne?
Archiwum JAR | Applet |
---|---|
Żeby uruchomić przykład Po_GUI_Zad1.jar ściągnij najpierw archiwum jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. | <applet code="applet.Zad1Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet> |
Rozwiązanie kod
Rozwiązanie wyjaśnienie
Zadanie 2
Zmodyfikuj klasę GridLayoutTest, tak aby to trzecia pozycja w siatce (tam gdzie jest przycisk P3), a nie szósta była pusta.
Archiwum JAR | Applet |
---|---|
Żeby uruchomić przykład Po_GUI_Zad2.jar ściągnij najpierw archiwum jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. | <applet code="applet.Zad2Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet> |
Rozwiązanie kod
Zadanie 3
Wyświetl okno o rozmiarach 300 na 150, zawierające na górze pięć przycisków: P1, P2, P3, P4 i Bardzo długi przycisk rozmieszczonych przez GridLayout o dwóch wierszach i trzech kolumnach, a na dole takie same pięć przycisków rozmieszczonych przy pomocy FlowLayout. Grupy przycisków powinny być rozmieszczone na oknie przez BorderLayout. Sprawdź czy wszystkie przyciski mieszczą się w oknie o tych rozmiarach.
Archiwum JAR | Applet |
---|---|
Żeby uruchomić przykład Po_GUI_Zad3.jar ściągnij najpierw archiwum jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. | <applet code="applet.Zad3Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet> |
Rozwiązanie kod
Zadanie 4
Używając BoxLayout i obiektów klasy Box przygotuj program wyświetlający 5 przycisków rozmieszczonych w dwóch kolumnach (w pierwszej trzy w drugiej dwa). Niech w każdej kolumnie przyciski będą wyśrodkowane. Porównaj efekt z przykładem GridLayoutTest.
Archiwum JAR | Applet |
---|---|
Żeby uruchomić przykład Po_GUI_Zad4.jar ściągnij najpierw archiwum jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. | <applet code="applet.Zad4Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet> |
Wskazówka 1
Wskazówka 2
Rozwiązanie kod
Zadanie 5
Przygotuj program wyświetlający przycisk, który po najechaniu na niego myszką zmienia położenie. Do zmiany położenia użyj CardLayout.
Archiwum JAR | Applet |
---|---|
Żeby uruchomić przykład Po_GUI_Zad5.jar ściągnij najpierw archiwum jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. | <applet code="applet.Zad5Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet> |
Wskazówka 1
Wskazówka 2
Rozwiązanie kod
Zadanie 6
Rozszerz klasę Dodawanie o możliwość zmiany działania na mnożenie. Niech wybór działania będzie możliwy przy pomocy przycisku combo (JComboBox). Niech wynik będzie obliczany zarówno, gdy zostanie zaakceptowana wartość, z któregoś z pól oraz gdy zostanie zmienione działanie. Niech zawartość pól tekstowych będzie wyśrodkowana do prawej.
Archiwum JAR | Applet |
---|---|
Żeby uruchomić przykład Po_GUI_Zad6.jar ściągnij najpierw archiwum jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. | <applet code="applet.Zad6Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet> |
Rozwiązanie kod