Ćwiczenia 9 - Swing - część 1 Utwórz nowy projekt wybierając: File->New Project->Java Application, przy czym odznacz opcję Create Main Class. Kliknij prawym przyciskiem myszy na podfolder Source Packages i dodaj New -> JFrame Form... Należy pamiętać o podaniu nazwy pakietu. Jako Class Name podaj na przykład: Moje1Okienko. Otrzymaliśmy: W zakładce Design znajduje się nasze okno ramowe/ formatka. Wygenerowany przez NetBeans kod możemy zobaczyć w zakładce Source. Po lewej stronie znajduje się paleta z kontrolkami. Dodaj z palety etykietę Label i ustaw jej tekst na "Przyciski zmieniające kolor tła". Zmiany tekstu możesz dokonać klikając na etykietę prawym przyciskiem myszy i wybierając Edit Text, bądź wpisując tekst w panelu Properties znajdującym się po lewej stronie i umieszczając tekst w polu text:
Następnie dodaj z palety przycisk Button i podobnie jak dla etykiety, zmień wyświetlany dla niego tekst na napis "czerwony". Po kliknięciu w ten przycisk kolor tła powinien zmieniać się na czerwony, a zatem przechodzimy do obsługi zdarzeń. W tym celu klikamy na Button prawym przyciskiem myszy, a następnie wybieramy: I odpowiednio uzupełniamy kod: private void jbutton1actionperformed(java.awt.event.actionevent evt) { getcontentpane().setbackground(color.red); Następnie dodaj drugi przycisk pozwalający zmienić kolor na wybrany przez użytkownika poprzez JColorChooser. Kod obsługi tego zdarzenia powinien wyglądać następująco: private void jbutton2actionperformed(java.awt.event.actionevent evt) { Color color = JColorChooser.showDialog(null, "Wybierz kolor", getcontentpane().getbackground()); if (color!= null) { getcontentpane().setbackground(color); Teraz dodamy panel oraz etykietę na której wyświetlać będziemy współrzędne położenia myszki w panelu (zdarzenie mousemoved). Dodaj Panel i zmień jego tło na dowolny kolor poprzez Properties -> background, tak, aby było ono widoczne.
Poniżej Panelu dodaj etykietę Label - będziemy na niej wyświetlać położenie myszy. Aby oprogramować to zdarzenie, kliknij prawym przyciskiem na Panelu i wybierz zdarzenie mousemoved: Obsłuż zdarzenie następująco: private void jpanel1mousemoved(java.awt.event.mouseevent evt) { jlabel2.settext("(" + evt.getx() + "," + evt.gety() + ")"); Dodaj wierszowe pole tekstowe JTextArea.
Następnie stworzymy menu górne z kategoriami Plik i Edycja. Dodaj Menu Bar i zmień nazwy File i Edit na polskie nazwy: Plik i Edycja. Menu Plik powinien posiadać operacje Otwórz i Zapisz, natomiast Edycja powinna dawać możliwość Pogrubienia i Pochylenia czcionki użytej w JTextArea oraz posiadać operacje Kopiuj, Wklej i Wytnij. Aby do menu Plik dodać opcję Otwórz, kliknij prawym przyciskiem myszy na Plik, a następnie wybierz Add From Palette -> Menu Item: W utworzonym polu edytuj tekst na "Otwórz". Podobnie dodaj opcję Zapisz, Kopiuj, Wklej i Wytnij. Pogrubienie i Pochylenie dodaj natomiast jako MenuItem/CheckBox, aby możliwe było zaznaczenie wybranej opcji: Następnie obsłuż odpowiednio wszystkie zdarzenia.
Obsługa zdarzenia Wytnij: private void jmenuitem7actionperformed(java.awt.event.actionevent evt) { jtextarea1.cut(); Obsługa zdarzenia Kopiuj: private void jmenuitem5actionperformed(java.awt.event.actionevent evt) { jtextarea1.copy(); Obsługa zdarzenia Wklej: private void jmenuitem6actionperformed(java.awt.event.actionevent evt) { jtextarea1.paste(); Obsługa zdarzenia Zapisz: private void jmenuitemzapiszactionperformed(java.awt.event.actionevent evt) { JFileChooser fch = new JFileChooser(); if (fch.showsavedialog(null) == JFileChooser.APPROVE_OPTION) { try { jtextarea1.write(new FileWriter(fch.getSelectedFile())); catch (IOException ex) { Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); Obsługa zdarzenia Otwórz: private void jmenuitemotworzactionperformed(java.awt.event.actionevent evt) { JFileChooser fch = new JFileChooser(); if (fch.showopendialog(null) == JFileChooser.APPROVE_OPTION) {
try { jtextarea1.read(new FileReader(fch.getSelectedFile()), null); catch (IOException ex) { Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); Obsługa zdarzenia Pogrubienie: private void jmenuitemboldactionperformed(java.awt.event.actionevent evt) { int old_style = jtextarea1.getfont().getstyle(); jtextarea1.setfont(jtextarea1.getfont().derivefont(jmenuitembold.isselected()? old_style Font.BOLD : old_style & ~Font.BOLD)); Obsługa zdarzenia Pochylenie: private void jmenuitemitalicactionperformed(java.awt.event.actionevent evt) { int old_style = jtextarea1.getfont().getstyle(); jtextarea1.setfont(jtextarea1.getfont().derivefont(jmenuitemitalic.isselected()? old_style Font.ITALIC : old_style & ~Font.ITALIC));