PO Graficzny interfejs użytkownika - ćwiczenia: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Jsroka (dyskusja | edycje)
Nie podano opisu zmian
Jsroka (dyskusja | edycje)
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

<<< Powrót

<<< Powrót do modułu 14

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?

Podgląd działającego rozwiązania
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

{{{3}}}

Rozwiązanie wyjaśnienie

{{{3}}}

Zadanie 2

Zmodyfikuj klasę GridLayoutTest, tak aby to trzecia pozycja w siatce (tam gdzie jest przycisk P3), a nie szósta była pusta.

Podgląd działającego rozwiązania
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

{{{3}}}

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.

Podgląd działającego rozwiązania
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

{{{3}}}

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.

Podgląd działającego rozwiązania
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

{{{3}}}

Wskazówka 2

{{{3}}}

Rozwiązanie kod

{{{3}}}

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.

Podgląd działającego rozwiązania
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

{{{3}}}

Wskazówka 2

{{{3}}}

Rozwiązanie kod

{{{3}}}

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.

Podgląd działającego rozwiązania
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

{{{3}}}