SWING Miks Swing Java esimestes versioonides graafikavahendid ainult
- Slides: 34
SWING
Miks Swing? • Java esimestes versioonides graafikavahendid ainult AWT (Abstract Window Toolkit) abil • AWT komponendid on sõltuvad platvormist, nt. nupud, … • Vajadus platvormsõltumatute vahendite järgi
Kuidas teeb? • Swing komponente joonistab Java masin • AWT komponente joonistab op. süsteem • Swingi graafikakomponendid algavad tähega J (JFrame, JButton, JLabel, …) • import javax. swing. *; • import java. awt. event. *;
javax. swing. *; • Sisaldab palju J-tähega algavaid klasse, nt. Japplet, JFrame, JDialog • Laiendavad vastavaid AWT klasse • Uurige milliseid meetodeid ja välju nende kolme näite puhul päritakse
Konteinerklassid • Container – komponentide rühmitamiseks • JFrame – konteiner, mis sisaldab kasutajaliidese teisi komponente • JApplet – Swingi-põhine applet • JPanel – “nähtamatu” konteiner, nt. paigutushalduritega töötamiseks
Abiklassid • Graphics – joonistamiseks vajalik kontekst • Color, Font. Metrics, Dimension, … • Layout. Manager – konteineri paigutushaldurid Swing-klasside pärilushierarhia (vaadake paketti javax. swing):
Component (awt) Container (awt) Panel (awt) Applet (applet) JApplet (swing) Window (awt) Dialog (awt) JDialog (swing) Frame (awt) JFrame (swing) JWindow (swing) Box (swing) Cell. Renderer. Pane (swing) JComponent (swing) Abstract. Button (swing) JMenu. Item (swing) JCheck. Box. Menu. Item (swing) JMenu (swing) JRadio. Button. Menu. Item (swing) JToggle. Button (swing) JCheck. Box (swing) JRadio. Button (swing) JColor. Chooser (swing) JCombo. Box (swing) JFile. Chooser (swing) JInternal. Frame (swing) JLabel (swing)
JLayered. Pane (swing) JDesktop. Pane (swing) JList (swing) JMenu. Bar (swing) JOption. Pane (swing) JPanel (swing) JPopup. Menu (swing) JProgress. Bar (swing) JRoot. Pane (swing) JScroll. Bar (swing) JScroll. Pane (swing) JSeparator (swing) JSlider (swing) JSplit. Pane (swing) JTabbed. Pane (swing) JTable (swing) JText. Component (swing. text) JEditor. Pane (swing) JText. Area (swing) JText. Field (swing) JPassword. Field (swing) JTool. Bar (swing) JTool. Tip (swing) JTree (swing) JViewport (swing) Box. Filler (swing) <- Component (awt) Button. Group (swing) <- Object (lang)
Rakenduslik pool • Raam ( ingl. frame) - ülemtaseme konteiner, peamiselt teiste Swingkomponentide joonistamiseks. • Paneel (ingl. panel, pane) - vahetaseme konteiner, nuppude ja siltide paigutamiseks. • Nupp (ingl. button) - alamtaseme komponent, kasutajaga suhtlemiseks. • Silt, sedel (ingl. label) - alamtaseme komponent, informatsiooni hoidmiseks. • JText. Field, JTable, …
Mitmekihilised elemendid • JFrame (swing-paketi raam), samuti JDialog, JWindow ning JApplet, ka JInternal. Frame, sisaldavad vahendeid mitmekihiliseks joonistamiseks • Klassid JLayered. Pane, JDesktop. Pane ning JRoot. Pane kihtidega manipuleerimiseks. • Joonistamiseks on ette nähtud komponendid Canvas (awt), Panel (s. h. Applet ja JApplet) ja JPanel, aga saab kasutada ka teisi Swing-komponente.
public class Swing. Application {. . . public static void main(String[] args) {. . . JFrame frame = new JFrame("Swingiproov"); //loome komponendid raami sisse //paneme nad konteinerisse //nimega “contents” frame. get. Content. Pane(). add(contents, Border. Layout. CENTER); //raam valmis, näitame seda. frame. add. Window. Listener(. . . ); frame. pack(); frame. set. Visible(true); } }
Komponentide defineerimine Kood, mis väärtustab nupu: JButton nupp = new JButton(“Olen Swingi nupp!"); nupp. set. Mnemonic(Key. Event. VK_I); nupp. add. Action. Listener(. . . ”mingi tegevuse kuular”. . . ); Silt, sedel: . //näiteks mingid muutujad private static String label. Prefix = “Nupu klikkide arv: "; private int num. Clicks = 0; . . . //näiteks selline väärtustamine: final JLabel silt = new JLabel(label. Prefix + "0. . . silt. set. Label. For(button); . . . //näiteks vajutuste loendamiseks: silt. set. Text(label. Prefix + num. Clicks); ");
Üksik nupp ja raam import javax. swing. *; public class My. Frame. With. Components { public static void main(String[] args) { JFrame frame = new JFrame("Adding Components into the Frame"); // Add a button into the frame java. awt. Container container = frame. get. Content. Pane(); // get. Content. Pane() – tagastab sisu, millesse paneme nupu JButton jbt. OK = new JButton("OK"); container. add(jbt. OK); frame. set. Size(400, 300); frame. set. Visible(true); frame. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); } }
import java. awt. *; import javax. swing. *; public class Pildid{ public static void main(String argumendid[]){ JLabel silt=new JLabel("Maja silt"); Font suurkiri=new Font("Serif", Font. BOLD+Font. ITALIC, 30); Icon majapilt=new Image. Icon("maja. gif"); // leidke mingi pilt silt. set. Font(suurkiri); silt. set. Icon(majapilt); JButton nupp=new JButton("Maja nupp", majapilt); nupp. set. Tool. Tip. Text("Head vajutamist!"); nupp. set. Mnemonic(java. awt. event. Key. Event. VK_M); //”ALT+M” JFrame f=new JFrame("Sildiraam"); Container p=f. get. Content. Pane(); p. set. Layout(new Grid. Layout(2, 1)); // teatav paigutusviis p. add(silt); p. add(nupp); f. pack(); f. set. Visible(true); } }
Käsitsemissündmused (vt. eelmine loeng) nupp. add. Action. Listener(new Action. Listener() { public void action. Performed(Action. Event e) { num. Clicks++; silt. set. Text(label. Prefix + num. Clicks); } }); . . . raam. add. Window. Listener(new Window. Adapter() { public void window. Closing(Window. Event e) { System. exit(0); } });
Nupunäide import javax. swing. *; NB! Enne programmi käivitamist üritage arvata selle käitumist, uurige API-t public class Test. Button. Icons extends JFrame { public static void main(String[] args) { // Create a frame and set its properties JFrame frame = new Test. Button. Icons(); frame. set. Title("Button. Icons"); frame. set. Size(165, 80); frame. set. Default. Close. Operation(JFrame. EXIT_ON_CLOSE); frame. set. Visible(true); } public Test. Button. Icons() { Image. Icon us. Icon = new Image. Icon("us. Icon. gif"); Image. Icon ca. Icon = new Image. Icon("ca. Icon. gif"); Image. Icon uk. Icon = new Image. Icon("uk. Icon. gif"); JButton jbt = new JButton("Click it", us. Icon); jbt. set. Pressed. Icon(ca. Icon); jbt. set. Rollover. Icon(uk. Icon); get. Content. Pane(). add(jbt); } }
Komponentide lisamine konteinerisse JPanel pane = new JPanel(); //tühi paneel pane. set. Border(Border. Factory. create. Empty. Border( 30, 10, 30)); pane. set. Layout(new Grid. Layout(0, 1)); //ühe konkreetse paigutuse määrang pane. add(button); pane. add(label);
Paigutushaldurid Näidete põhjal ja API-t uurides teha kindlaks nende spetsiifika. • • • Aitavad konteinereid rühmitada Raami paigutamine konteineris - set. Location(int x, int y) Flow. Layout – Show. Flow. Layout. java Grid. Lay. Out – Show. Grid. Layout. java Border. Layout – Show. Border. Layout. java Konteineril saab olla üks paigutusviis, selle muutmiseks meetodid set. Layout(Uus. Paigutus), validate(), do. Layout()
Isetegemine (html) import javax. swing. *; public class Html. Label{ public static void main(String argumendid[]){ JFrame f=new JFrame("Kujundatud silt"); JLabel silt=new JLabel( "<html><h 2>Pealkirja</h 2>n"+ "ja <font color=red>punase tekstiga</font> silt</html>" ); f. get. Content. Pane(). add(silt); f. pack(); f. set. Visible(true); } }
Nupule reageerimine • Deklareerida selle nupu sündmused • public class Button. Demo extends JFrame implements Action. Listener • Näide: Button. Demo. java
Raamid üksteise sees • Analoogia – Word • Siin JInternal. Frame, JDesktop. Pane. • Teated – Internal. Frame. Listener
import javax. swing. *; public class Sise. Raamiga. Raam{ public static void main(String argumendid[]) throws Exception{ JInternal. Frame siseraam 1=new JInternal. Frame("Esimene"); JInternal. Frame siseraam 2=new JInternal. Frame("Teine", true, true); siseraam 2. get. Content. Pane(). add(new JText. Area()); JDesktop. Pane paneel=new JDesktop. Pane(); siseraam 1. set. Size(200, 100); siseraam 1. set. Location(10, 80); siseraam 1. set. Visible(true); paneel. add(siseraam 1); siseraam 1. set. Selected(true); siseraam 2. set. Visible(true); paneel. add(siseraam 2); siseraam 2. set. Size(150, 150); siseraam 2. set. Location(120, 50); JFrame f=new JFrame("Kest"); f. set. Content. Pane(paneel); f. set. Size(300, 300); f. set. Visible(true); }}
Paigutus • JSplit. Pane • Näide: veebibrauserid • Jagamise koht, selle nihutamine
import javax. swing. *; class Jaotus. Paneel{ public static void main(String argumendid[]){ JSplit. Pane paneel=new JSplit. Pane( JSplit. Pane. VERTICAL_SPLIT, new JButton(“ülemine"), new JToggle. Button("Alumine") ); JFrame f=new JFrame("Jagatud raam"); f. get. Content. Pane(). add(paneel); f. set. Size(200, 200); f. set. Visible(true); } }
import javax. swing. *; class Valiku. Paneel{ public static void main(String argumendid[]){ JPanel p 1=new JPanel(new java. awt. Grid. Layout(2, 1)); p 1. add(new JButton(“ülemine")); p 1. add(new JButton("Alumine")); JTabbed. Pane paneel=new JTabbed. Pane(); paneel. add("Esimene", p 1); paneel. add("Teine", new JLabel("Suur silt")); JFrame f=new JFrame("Valikupaneeli näide"); f. get. Content. Pane(). add(paneel); f. set. Size(200, 200); f. set. Visible(true); } }
Paneeli “jaotus” • Klass JSplit. Pane • Splitpanetest. java
Värvivalija • JColor. Chooser • “värv” = x*”punane” + y*”roheline” + z*”sinine”
import javax. swing. *; import javax. swing. event. *; public class Varvi. Valik{ public static void main(String argumendid[]){ final JText. Area tekstiala=new JText. Area("Värvilised tervitused"); final JColor. Chooser valija=new JColor. Chooser(); // valija. set. Preview. Panel(new JPanel()); valija. get. Selection. Model(). add. Change. Listener( new Change. Listener(){ public void state. Changed(Change. Event e){ tekstiala. set. Foreground(valija. get. Color()); } } ); JFrame f=new JFrame("Värvivalik"); java. awt. Container p=f. get. Content. Pane(); p. add("Center", tekstiala); p. add("South", valija); f. set. Size(300, 500); f. set. Visible(true); } }
Failinime valija • JFile. Chooser • Meetodid show. Open. Dialog, … tavalised failiprotseduurid: lugemine, kirjutamine, …. • Filter, meetodid accept, get. Description (“tingimuslause”).
import javax. swing. *; import java. io. *; public class Faili. Valik{ public static void main(String argumendid[]){ JFile. Chooser valija=new JFile. Chooser(new File(". ")); valija. show. Open. Dialog(new JFrame()); System. out. println("Valiti "+valija. get. Selected. File()); } }
import javax. swing. *; import javax. swing. filechooser. File. Filter; import java. io. *; public class Faili. Valik 2{ public static void main(String argumendid[]){ JFile. Chooser valija=new JFile. Chooser(new File(". ")); valija. add. Choosable. Filter(new Pildifilter()); valija. show. Dialog(new JFrame(), "Vali fail"); System. out. println("Valiti "+valija. get. Selected. File()); } } class Pildifilter extends File. Filter{ public boolean accept(File f){ String failinimi=f. get. Name(); if(failinimi. ends. With(“. gif")|failinimi. ends. With(“. jpg")) return true; else return false; } public String get. Description(){ return "Pildifailid "; }}
Tabelid • Klass JTable • JTable table=new JTable(cells, column. Names); JScroll. Pane pane=new JScroll. Pane(table); • Planet. Table. java
Lisalugemist • http: //java. sun. com/docs/books/tutorial/uiswing/learn/index. html • http: //www. cs. ut. ee/~ahtip/ Tunnid/2001 -2002 kevad/OOP/TIJ/Chap 13. htm
Veel näiteid (raamatust Y. D. Liang “Introduction to Java”) • • Test. Panels. java – komponentide paigutus Draw. Polygon. java – hulknurga joonistus Check. Box. Demo. java – mitmene valik Radio. Button. Demo. java – raadionupud Text. Field. Demo. java – tekstiväli Text. Area. Demo. java – kerimisribaga tekstiala Scroll. Bar. Demo. java – kerimisribad
- Pengertian awt dan swing pada java
- Produkti miks
- Miks on linnud looduses tähtsad
- Miks on elurikkus tähtis
- Miks me ei taju osake-laine dualismi mikromaailmas?
- Ramadan gedicht
- Qka eshte propaganda
- Promocioni i shitjeve
- Trman
- Marketing miks primer
- Nucleus cochlearis
- Marketing miks
- Soojuspaisumine
- Miks on amazonase vesi kollakas
- Komunikacioni miks
- Miks nedir
- Meeled on aknaks maailma
- Miks on kalad tähtsad
- Sjögren tanı kriterleri
- Promocioni miks
- Indirektna prodaja
- Mida söövad konnakullesed
- Püsisoojased
- Miks on lõunapoolkeral okasmetsi väga vähe
- Sammasjuurestik
- Spermid koos eesnäärme ja seemnepõiekeste nõrega
- Miks on okasmetsad liigivaesemad kui lehtmetsad
- Mandy miks
- Putukate tähtsus
- Java swing panel
- Mvc java swing
- Java ui libraries
- Java swing eclipse
- Java swing mvc example
- Swing ni