Σύνθεταγραφικάσ ε Java ΙωάννηςΓ.Τσ ούλος May 15, 2013 1 Δημιουργία απλών παραθύρων Τοεπόμενοπαράδειγμαδημιουργείέναπαράθυρομεδύοσ τατικάκείμενασ εαυτό. Στοπρώτοσ τατικόκείμενοτοκείμενοείναιαπλόκαισ τοδεύτερογίνεταιχρήσ η HTMLγιατηνμορφοποίησ η. 5 c l a s s Close_Window extends WindowAdapter 7 public void windowclosing ( WindowEvent e ) 13 class MyFrame extends JFrame 1 { 15 JLabel label1, label2 ; 16 public MyFrame( String t i t l e ) 17 { 18 super( t i t l e ) ; 19 Container cp=getcontentpane ( ) ; 20 cp. setlayout (new FlowLayout ( ) ) ; 21 label1=new JLabel ("This i s simple text", JLabel.CENTER) ; 22 label2=new JLabel ("<html><head><title ></t i t l e ></head>"+ 23 "<body><b>bold text </b> <i> i t a l i c s text </i>"+ 2 "</body></html>", JLabel.RIGHT) ; 25 cp. setbackground( Color.WHITE) ; 26 cp. add( label1 ) ; 27 cp. add( label2 ) ; 28 addwindowlistener(new Close_Window ( ) ) ; 29 setsize (500,500); 1
30 s e tvisible (true ) ; 31 } 32 } 33 3 public class swing1 35 { 36 public static void main( String arg [ ] ) 37 { 38 MyFrame f=new MyFrame(" test1 " ) ; 39 } 0 } 2 Δημιουργία πλήκτρων Γιατηνδημιουργίαπλήκτρωνθαχρειασ τούμετηνκλάσ η JButtonηοποίαείναι περισ σ ότεροευέλικτηαπότηνκατηγορία Buttonπουχρησ ιμοποιείταισ τηνβιβλιοθήκη awt,καθώςμπορούμενατηνχρησ ιμοποιήσ ουμεγιαναφτιάξουμεπλήκτρα πουέχουνεικόνεςήακόμακαικείμενομαζίμεεικόνες. 5 c l a s s Close_Window extends WindowAdapter 7 public void windowclosing ( WindowEvent e ) 13 class MyFrame extends JFrame 1 { 15 JButton button1, button2, butto n3 ; 16 public MyFrame( String t i t l e ) 17 { 18 super( t i t l e ) ; 19 Container cp=getcontentpane ( ) ; 20 cp. setlayout (new GridLayout (1, 3 )); 21 cp. setbackground( Color.WHITE) ; 22 23 button1=new JButton ("",new ImageIcon (" arrow_left. png" ) ) ; 2 button2=new JButton ("Home" ) ; 25 button3=new JButton ("",new ImageIcon ("arrow_right. png" ) ) ; 26 cp. add( button1 ) ; 2
27 cp. add( button2 ) ; 28 cp. add( button3 ) ; 29 addwindowlistener(new Close_Window ( ) ) ; 30 setsize (300,100); 31 s e tvisible (true ) ; 32 } 33 } 3 35 public class swing2 3 37 public static void main( String arg [ ] ) 3 39 MyFrame f=new MyFrame(" test2 " ) ; 0 } 1 } 3 Πλαίσ ιακειμένου Γιατηνεισ αγωγήκειμένουαπότονχρήσ τηχρησ ιμοποιούμετιςκατηγορίες JTextField, JTextArea. 2 import javax.swing. ; 5 class Close_Window extends WindowAdapter 7 public void windowclosing (WindowEvent e ) 13 class MyFrame extends JFrame 1 { 15 JTextField name, lastname ; 16 JTextArea d e tails ; 17 public MyFrame(String t i t l e ) 1 19 super ( t i t l e ) ; 20 Container cp=getcontentpane ( ) ; 21 cp. setlayout (new GridLayout (3, 1 )); 22 cp. setbackground( Color.WHITE) ; 23 name=new JTextField ( ) ; 2 lastname=new JTextField ( ) ; 3
25 d e tails=new JTextArea (10,10); 26 cp. add(name ) ; 27 cp. add( lastname ) ; 28 cp. add( d e tails ) ; 29 addwindowlistener( new Close_Window ( ) ) ; 30 setsize (100,300); 31 s e tvisible (true ) ; 32 } 33 } 3 35 public class swing3 3 37 public static void main(string arg [ ] ) 3 39 MyFrame f=new MyFrame(" test3 " ) ; 0 } 1 } Διορθώσ τετοπαραπάνωπρόγραμμαώσ τεναεμφανίζειετικέττεςμεταπλαίσ ια εισ αγωγήςκειμένουαρισ τεράαπόαυτά,δηλαδήτοονομαναεμφανίζεταιπριν απότο name. Χειρισ μόςγεγονότωνσ το Swing Υπάρχουνδιάφοροιτρόποιγιαχειρισ μόγεγονότωνσ την Javaγιατο swingκαι οπιοβολικόςπρογραμματισ τικάθαλέγαμεπωςείναιοχειρισ μόςγεγονότωνμε ανώνυμες κατηγορίες. 5 c l a s s Close_Window extends WindowAdapter 7 public void windowclosing ( WindowEvent e ) 13 class MyFrame extends JFrame 1 { 15 JButton testbutton ; 16 public MyFrame( String t i t l e ) 17 { 18 super( t i t l e ) ;
19 Container cp=getcontentpane ( ) ; 20 cp. setlayout (new GridLayout (3, 1 )); 21 cp. setbackground( Color.WHITE) ; 22 testbutton=new JButton (" test " ) ; 23 cp. add( testbutton ) ; 2 testbutton. addactionlistener (new ActionListener () 25 { 26 public void actionperformed ( ActionEvent e ) 27 { 28 JOptionPane. showmessagedialog (null, "button pressed" ) ; 29 } 30 }); 31 addwindowlistener(new Close_Window ( ) ) ; 32 setsize (100,100); 33 s e tvisible (true ) ; 3 } 35 } 36 37 public class swing 3 39 public static void main( String arg [ ] ) 0 { 1 MyFrame f=new MyFrame(" test " ) ; 2 } 3 } 5 Λίσ τεςεπιλογής 5.1 Hκατηγορία JComboBox Ηκατηγορία JComboBoxμπορείναχρησ ιμοποιηθείγιατηνεμφάνισ ηενόςπτυσ σ όμενου μενού που ανοίγει προς τα κάτω. 2 import javax.swing. ; 5 class Close_Window extends WindowAdapter 7 public void windowclosing (WindowEvent e ) 5
13 class MyFrame extends JFrame 1 { 15 String names[]={ "Linux", " S o l a r i s", "Openbsd", "Freebsd", "Windows" }; 16 JComboBox combo ; 17 String selectedna me="" ; 18 public MyFrame(String t i t l e ) 19 { 20 super ( t i t l e ) ; 21 Container cp=getcontentpane ( ) ; 22 cp. setlayout (new GridLayout (3, 1 )); 23 cp. setbackground( Color.WHITE) ; 2 combo=new JComboBox( names ) ; 25 combo. setmaximumrowcount (2); 26 cp. add(combo ) ; 27 combo. additemlistener(new ItemListener () { 28 public void itemstatechanged( ItemEvent e ) 29 { 30 if (! selectedname. equals (names [ combo. getselectedindex ( )])) 31 { 32 selectedname=names [ combo. getselectedindex ( ) ] ; 33 System. out. println (" Selected = "+selectedname ) ; 3 } 35 } 36 }); 37 addwindowlistener( new Close_Window ( ) ) ; 38 setsize (100,200); 39 s e tvisible (true ) ; 0 } 1 } 2 3 public class swing5 { 5 public static void main(string arg [ ] ) 7 MyFrame f=new MyFrame(" test5 " ) ; 8 } 9 } 5.2 Η κατηγορία JList import javax. swing. event. ; 5 6
6 c l a s s Close_Window extends WindowAdapter 7 { 8 public void windowclosing ( WindowEvent e ) 9 { 10 System. exit ( 0); } 13 1 class MyFrame extends JFrame 15 { 16 String names[]={ "Linux", " S o l a r i s", "Openbsd", "Freebsd", "Windows" }; 17 JList l i s t ; 18 String selectedname="" ; 19 public MyFrame( String t i t l e ) 20 { 21 super( t i t l e ) ; 22 Container cp=getcontentpane ( ) ; 23 cp. setlayout (new GridLayout (3, 1 )); 2 cp. setbackground( Color.WHITE) ; 25 l i s t=new JList (names ) ; 26 l i s t. setvisiblerowcount (2); 27 l i s t. setselectionmode ( ListSelectionModel.SINGLE_SELECTION) ; 28 cp. add( l i s t ) ; 29 l i s t. addlistselectionlistener (new ListSelectionListener () 30 { 31 public void valuechanged( ListSelectionEvent e ) 32 { 33 if (! selectedname. equals (names [ l i s t. getselectedindex ( ) ] ) ) 3 { 35 selectedname=names [ l i s t. getselectedindex ( ) ] ; 36 System. out. println (" Selected = "+selectedname ) ; 37 } 38 } 39 }); 0 addwindowlistener(new Close_Window ( ) ) ; 1 setsize (100,200); 2 s e tvisible (true ) ; 3 } } 5 6 public class swing6 7 { 8 public static void main( String arg [ ] ) 9 { 50 MyFrame f=new MyFrame(" test6 " ) ; 51 } 7
52 } 5.3 Η κατηγορία JMenu Τοπακέτο AWTδιαθέτειέναναρκετάεύχρησ τοτρόπογιατηνδημιουργίαμενου. Η διαδικασ ία είναι σ χετικά απλή: δημιουργείταιμια μπάρα με τα menu, σ την σ υνέχειαταίδιατα menuκαισ τοτέλοςτασ τοιχείατων menus (menuitems) import javax. swing. event. ; 5 6 c l a s s Close_Window extends WindowAdapter 7 { 8 public void windowclosing ( WindowEvent e ) 9 { 10 System. exit ( 0); } 13 1 class MenuItemHandler implements ActionListener 15 { 16 public void actionperformed ( ActionEvent e ) 17 { 18 String cmd=e. getactioncommand ( ) ; 19 JOptionPane. showmessagedialog (null, "event = "+cmd ) ; 20 if (cmd. equals ("Exit" )) System. exit (0); 21 } 22 } 23 2 class MyFrame extends JFrame 25 { 26 JMenuBar bar ; 27 JMenu filemenu ; 28 JMenu editmenu ; 29 JMenuItem filenew, fileopen, filesave, f i l e E x i t ; 30 JMenuItem editundo, editredo, editcut, editpaste ; 31 MenuItemHandler handler ; 32 public MyFrame( String t i t l e ) 33 { 3 super( t i t l e ) ; 35 Container cp=getcontentpane ( ) ; 36 cp. setbackground( Color.WHITE) ; 37 handler=new MenuItemHandler ( ) ; 38 bar=new JMenuBar ( ) ; 39 filemenu=new JMenu(" File " ) ; 8
0 editmenu=new JMenu("Edit" ) ; 1 filenew =new JMenuItem ("New" ) ; 2 filenew. addactionlistener ( handler ) ; 3 filemenu. add( filenew ) ; fileopen=new JMenuItem ("Open" ) ; 5 fileopen. addactionlistener ( handler ) ; 6 filemenu. add( fileopen ) ; 7 filesave=new JMenuItem ("Save" ) ; 8 f i l e E x i t=new JMenuItem ("Exit" ) ; 9 f i l e E x i t. addactionlistener ( handler ) ; 50 filemenu. add( f i l e E x i t ) ; 51 52 editundo=new JMenuItem ("Undo" ) ; 53 editundo. addactionlistener ( handler ) ; 5 editmenu. add( editundo ) ; 55 56 editredo=new JMenuItem (" Redo" ) ; 57 editredo. addactionlistener ( handler ) ; 58 editmenu. add( editredo ) ; 59 60 editcut=new JMenuItem ("Cut" ) ; 61 editcut. addactionlistener ( handler ) ; 62 editmenu. add( editcut ) ; 63 6 editpaste=new JMenuItem ("Paste" ) ; 65 editpaste. addactionlistener ( handler ) ; 66 editmenu. add( editpaste ) ; 67 68 bar. add( filemenu ) ; 69 bar. add( editmenu ) ; 70 setjmenubar ( bar ) ; 71 addwindowlistener(new Close_Window ( ) ) ; 72 setsize (500,200); 73 s e tvisible (true ) ; 7 75 } 76 } 77 78 public class swing7 79 { 80 public static void main( String arg [ ] ) 81 { 82 MyFrame f=new MyFrame(" test7 " ) ; 83 } 8 } 9