140 likes | 331 Views
Osnove programiranja (v Javi). 10. del 31. januar 2005 Marko Štamcar http://java.stamcar.com/. Uvod v delo z grafiko. Dve knjižnici za programiranje GUI (graphical user interface) AWT (Abstract Window Toolkit) Starejša knjižnica Na različnih platformah različen izgled Swing
E N D
Osnove programiranja (v Javi) 10. del 31. januar 2005 Marko Štamcar http://java.stamcar.com/
Uvod v delo z grafiko • Dve knjižnici za programiranje GUI (graphical user interface) • AWT (Abstract Window Toolkit) • Starejša knjižnica • Na različnih platformah različen izgled • Swing • Novejša knjižnica • Na vseh platformah enak izgled • V programih kombiniramo uporabo obeh
Okno Frame JFrame http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Frame.html
Osnutek kode import java.awt.*; import javax.swing.*; public class GUIApp { public static void main(String[] args) { // } }
Razred, ki deduje lastnosti razreda JFrame import java.awt.*; import javax.swing.*; public class GUIApp { public static void main(String[] args) { // } } class Okno extends JFrame { public Okno() { // “nastavitve” okna } }
“Nastavitve” okna • setTitle("Naslov okna"); • setSize(570,500); • setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Popravek osnutka kode • Namesto // damo: • JFrame okno = new Okno(); • okno.show(); import java.awt.*; import javax.swing.*; public class GUIApp { public static void main(String[] args) { JFrame okno = new Okno(); okno.show(); } } class Okno extends JFrame { public Okno() { // “nastavitve” okna } }
Dodamo “nastavitve” okna import java.awt.*; import javax.swing.*; public class GUIApp { public static void main(String[] args) { JFrame okno = new Okno(); okno.show(); } } class Okno extends JFrame { public Okno() { setTitle("Naslov okna"); setSize(570,500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
Dodajanje vsebine • Kodo dodajamo v konstruktor za okno: • Najprej potrebujemo Container, kamor bomo dodajali elemente: • Container vsebina = getContentPane(); • Izpeljati moramo nek razred iz razreda JPanel (naslednja prosojnica) • Nato dodamo risalno površino: • JPanel panel1 = new Panel1(); • vsebina.add(panel1);
JPanel • Je “neviden”. Lahko ga uporabimo za risalno površino v JFrame: class Panel1 extends JPanel { public void paintComponent(Graphics grafika) { // ukazi za risanje } } http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics.html
Če vse to sestavimo skupaj, dobimo: import java.awt.*; import javax.swing.*; public class GUIApp { public static void main(String[] args) { JFrame okno = new Okno(); okno.show(); } } class Okno extends JFrame { public Okno() { setTitle("Naslov okna"); setSize(570,500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container vsebina = getContentPane(); JPanel panel1 = new Panel1(); vsebina.add(panel1); } } class Panel1 extends JPanel { public void paintComponent(Graphics grafika) { // ukazi za risanje } }
Risanje • Poteka znotraj metodepublic void paintComponent(Graphics grafika) • Primer: • grafika.setColor(Color.black); • grafika.drawRect(15,15,140,140); http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics.html