Dijalozi i uvod u grafiku u Javi

Lekcija 1 od 8 · Java – grafičke aplikacije

Da bi napravili ozbiljnu aplikaciju neophodno je da ona ima i svoj korisnički interfejs. To zapravo predstavlja grafički deo aplikacije. Smatra se da je dobra programerska praksa kreiranje aplikacija po MVC arhitekturi(Model View Controler engl.). Ovo praktično znači da ne treba mešati kod koji s jedne strane organizuje i čuva podatke i vrši razna izračunavanja(Model), prikazuje grafički deo aplikacije (View) i kontroliše i povezuje ove dve celine da funkcionišu kako treba(Controller).

U ovom delu se opisuje kreiranje vizuelnog dela aplikacije, dakle ono što u pomenutoj arhitekturi predstavlja View.U početku su za to korišćene klase iz paketa java.awt i 4 potpaketa java.awt.event, java.awt.image, java.awt.datatransfer i java.awt.peer.

Kasnije je napravljen swing korisnički paket i na ovom websajtu je opisano kreiranje aplikacija pomoću ovog paketa.

Na kraju je opisana i javafx tehnologija za kreiranje desktop i bogatih internet aplikacija.

Standardni kalkulator - 1.deo

Video opisuje kako se kreira vizuelna aplikacija u JAVI, tačnije kako se kreira aplikacija po uzoru na standardni kalkulator.

Kreiranje vizuelnog dela aplikacije-tutorijal

Ovaj tutorijal sadrži:

Animacije u JAVI

Animacije u JAVI

Grafički korisnički interfejs GUI

Grafički korisnički interfejs GUI

Crtanje u prozoru

Crtanje u prozoru

Događaji u JAVI

Događaji u JAVI

Primeri izrade grafike u Javi

Primeri izrade grafike u Javi

Rad sa osnovnim dijalozima(klasa JOptionPane)

U swing paketu(javax.swing) nalaze se klase kao podrška za rad sa grafičkim objektima(forme,dijalozi, komponente na formi itd).

U klasi JOptionPane se nalaze metode koje kreiraju osnovne dijaloge za unos podataka, prikaz podataka, dijaloge za potvrdu, upozorenja, poruke o grešci itd

Dijalog za unos-InputDialog

Koristi se kod unosa podataka String,double, int itd.Npr.

  • Unos tekstualnog podatka:
import javax.swing.JOptionPane;

public class UnosTeksta {
    public static void main(String[] args) {
        String text;
        text = JOptionPane.showInputDialog("Unesi tekst"); // unos teksta

        System.out.println(text);
    }
}
Dijalog za unos. Input dialog. Unos tekstualnog podatka.
Slika1: Dijalog za unos. Input dialog. Unos tekstualnog podatka.

Pri pokretanju prikazuje se dijalog gde korisnik moze uneti tekstualni podatak. Ovaj dijalog je iscrtala metoda showInputDialog i ova metoda vraca podatak tipa String, tj onaj tekst koji korisnik unese u polje za tekst na dijalogu.

Posle pokretanja:

Izlaz programa:

Ovo je unet tekst
Slika2: Dijalog za unos. Input dialog. Unos tekstualnog podatka-izlaz
  • Unos celobrojnog podatka

Ako bi sledili logiku unošenja tekstualog(String) podatka i to isto pokušali da uradimo sa celobrojnim podatkom dobili bi smo poruku o grešci:

import javax.swing.JOptionPane;

public class UnosBroja {
    public static void main(String[] args) {
        int a;
        a = JOptionPane.showInputDialog("Unesi ceo broj"); // GREŠKA: metoda vraća String, a ne int
    }
}

Prevodilac ovde prijavljuje grešku incompatible types: String cannot be converted to int.

Slika3: Dijalog za unos. Input dialog. Unos celobrojnog podatka

pošto metoda vraća String i sa leve strane mora biti String promenljiva. Zbog toga ćemo uvesti još jednu promenljivu tipa String u koju ćemo smestiti broj u vidu teksta npr. “7”, a potom izvršiti parsiranje i broj kao tekst pretvoiti u broj kao int.

import javax.swing.JOptionPane;

public class UnosBroja {
    public static void main(String[] args) {
        int a;
        String aStr;
        aStr = JOptionPane.showInputDialog("Unesi ceo broj");
        a = Integer.parseInt(aStr); // tekst "7" -> broj 7
    }
}
 Dijalog za unos. Input dialog. Unos celobrojnog podatka. Pretvaranje iz teksta u ceo broj.
Slika4: Dijalog za unos. Input dialog. Unos celobrojnog podatka. Pretvaranje iz teksta u ceo broj.

Dijalog za poruke-MessageDialog

Koristi se za brz prikaz neke poruke

import javax.swing.JOptionPane;

public class UnosBroja {
    public static void main(String[] args) {
        int a;
        String aStr;
        aStr = JOptionPane.showInputDialog("Unesi ceo broj");
        a = Integer.parseInt(aStr);

        JOptionPane.showMessageDialog(null, "a=" + a, "Rezultat",
            JOptionPane.INFORMATION_MESSAGE); // prikazuje dijalog sa informacijom
    }
}
Dijalog za poruke. Dijalog za informacije.
Slika 5: Dijalog za poruke. Dijalog u kome se prikazuju informacije.

Ako je umesto indikatora JoptionPane.INFORMATION_MESSAGE upotrebi indikator JoptionPane.ERROR_MESSAGE dobićemo dijalog za prikaz poruke o grešci:

import javax.swing.JOptionPane;

public class Deljenje {
    public static void main(String[] args) {
        int a, b;
        String aStr, bStr;
        aStr = JOptionPane.showInputDialog("Unesi a");
        a = Integer.parseInt(aStr);
        bStr = JOptionPane.showInputDialog("Unesi b");
        b = Integer.parseInt(bStr);

        double x;
        if (a != 0) {
            x = (double)b / a;
            JOptionPane.showMessageDialog(null, "x=" + x, "Rezultat",
                JOptionPane.INFORMATION_MESSAGE); // dijalog sa informacijom
        } else {
            JOptionPane.showMessageDialog(null, "nije dozvoljeno deljenje sa nulom", "Greska",
                JOptionPane.ERROR_MESSAGE); // dijalog sa porukom o grešci
        }
    }
}

U ranijoj verziji primera drugi broj se pretvarao iz pogrešne promenljive (aStr umesto bStr), a b / a je bilo celobrojno deljenje; ovde je to ispravljeno.

Slika 6: Dijalog za poruke. Dijalog u kome se prikazuju greške.
Slika 6: Dijalog za poruke. Dijalog u kome se prikazuju greške.

Dijalog za poruke-ConfirmDialogKoristi se za ako želimo da od korisnika zatražimo da potvrdi prethodnu komandu. Npr. ako je dao komandu za brisanje nekog dokumenta, prikazuje mu se dijalog za potvrdu, sa izborom da završi započeto brisanje ili da odustane.

import javax.swing.JOptionPane;

public class Dijalozi {
    public static void main(String[] args) {
        JOptionPane.showConfirmDialog(null, "Da li ste sigurni ...",
            "Potvrda", JOptionPane.YES_NO_CANCEL_OPTION);
    }
}
Dijalog za potvrdu. Dijalog u kome treba potvrditi ili odustati od prethodno započete radnje
Slika 7: Dijalog za potvrdu. Dijalog u kome treba potvrditi ili odustati od prethodno započete radnje

Proveri znanje

Otvori kviz

Kviz: Dijalozi u Javi

1. Šta vraća JOptionPane.showInputDialog(...)?




2. Kako se String "25" pretvara u ceo broj?




3. Koja metoda prikazuje poruku u prozoru?




4. Šta daje b / a ako su oba int, a = 2, b = 7?