java swing tutorial container
Αυτό το περιεκτικό σεμινάριο Java Swing εξηγεί διάφορα στοιχεία του GUI Swing Framework και σχετικές έννοιες όπως JPanel, JFrame, JButton κ.λπ.
Χρησιμοποιούμε γραφικές διεπαφές χρήστη (συνήθως ονομάζονται GUI) για τη δημιουργία εφαρμογών που έχουν οπτική διεπαφή διευκολύνοντας τον χρήστη να χρησιμοποιήσει την εφαρμογή.
Έχοντας μια οπτική διεπαφή για μια εφαρμογή καθιστά την εφαρμογή εύκολη στην πλοήγηση, χρησιμοποιήστε τα στοιχεία ελέγχου πιο αποτελεσματικά και επίσης είναι οπτικά ελκυστικό για τον χρήστη.
Το Swing χρησιμοποιείται κυρίως για τη δημιουργία του GUI για εφαρμογές.
=> Επισκεφθείτε εδώ για να δείτε τη σειρά εκπαίδευσης Java για όλους.
Τι θα μάθετε:
- Εκπαιδευτικό βίντεο για Java Swing
- Τι είναι το Java Swing
- Στοιχεία Java Swing
- Μαθήματα Swing στην Ιάβα
- Swing Vs JavaFX
- συμπέρασμα
Εκπαιδευτικό βίντεο για Java Swing
Τι είναι το Java Swing
Η Java παρέχει πολλά πλαίσια GUI που μας βοηθούν στην ανάπτυξη μιας ποικιλίας εφαρμογών GUI. Έχουμε δει ένα στο προηγούμενο σεμινάριό μας, δηλαδή το Abstract Window Toolkit ή το AWT. Το AWT είναι ένα από τα παλαιότερα πλαίσια GUI στην Java και εξαρτάται επίσης από την πλατφόρμα. Ένα άλλο μειονέκτημα του AWT είναι τα βαρέων βαρών συστατικά του.
Σε αυτό το σεμινάριο, θα συζητήσουμε ένα ακόμη πλαίσιο GUI στην Java, δηλαδή 'SWING'. Το πλαίσιο Swing στην Java είναι μέρος των Java Foundation Classes ή συνήθως ονομάζεται JFCs. Το JFC είναι ένα API παρόμοιο με τα MFC (Microsoft Foundation Classes) στο C ++. Το JFC περιέχει Swing, AWT και Java2D.
Το πλαίσιο Swing στην Java είναι χτισμένο πάνω από το πλαίσιο AWT και μπορεί να χρησιμοποιηθεί για τη δημιουργία εφαρμογών GUI όπως το AWT. Αλλά σε αντίθεση με το AWT, τα εξαρτήματα Swing είναι ελαφριά και δεν εξαρτώνται από την πλατφόρμα.
Το πλαίσιο Swing είναι γραμμένο εξ ολοκλήρου στην Java. Το πλαίσιο Swing στην Java παρέχεται μέσω του πακέτου «javax.swing». Τα μαθήματα στο πακέτο javax.swing ξεκινούν με το γράμμα «J». Έτσι, σε ένα πακέτο javax.swing, θα έχουμε μαθήματα όπως JButton, JFrame, JTextField, JTextArea κ.λπ.
Γενικά, το Swing API έχει κάθε στοιχείο ελέγχου που καθορίζεται στο πακέτο javax.swing που υπάρχει στο AWT. Έτσι, η ταλάντευση κατά κάποιο τρόπο δρα ως αντικατάσταση του AWT. Επίσης, το Swing διαθέτει διάφορα παράθυρα με καρτέλες για προχωρημένους. Το Swing API σε Java προσαρμόζει την αρχιτεκτονική MVC (Model View Controller).
Τα κύρια χαρακτηριστικά αυτής της αρχιτεκτονικής είναι:
- Τα δεδομένα του στοιχείου swing παρουσιάζονται χρησιμοποιώντας το Model.
- Αναπαριστάται οπτικά χρησιμοποιώντας μια προβολή.
- Το στοιχείο ελεγκτή της αρχιτεκτονικής MVC διαβάζει την είσοδο από τον χρήστη στην προβολή και στη συνέχεια αυτές οι αλλαγές μεταβιβάζονται στα δεδομένα του στοιχείου.
- Σε κάθε στοιχείο Swing, η προβολή και ο ελεγκτής είναι ενωμένοι ενώ το μοντέλο είναι ξεχωριστό. Αυτό δίνει στο swing μια δυνατότητα εμφάνισης και αίσθησης με δυνατότητα σύνδεσης.
Τα χαρακτηριστικά του swing API συνοψίζονται παρακάτω.
- Τα εξαρτήματα Swing είναι ανεξάρτητα από την πλατφόρμα.
- Το API είναι επεκτάσιμο.
- Τα εξαρτήματα ταλάντευσης είναι ελαφριά. Τα στοιχεία swing είναι γραμμένα σε καθαρή Java και επίσης τα στοιχεία αποδίδονται χρησιμοποιώντας κώδικα Java αντί για υποκείμενες κλήσεις συστήματος.
- Το Swing API παρέχει ένα σύνολο προηγμένων στοιχείων ελέγχου όπως TabbedPane, Tree, Colorpicker, πίνακες ελέγχου κ.λπ. που είναι πλούσια σε λειτουργικότητα.
- Τα χειριστήρια swing είναι πολύ προσαρμόσιμα. Αυτό συμβαίνει επειδή η εμφάνιση ή η εμφάνιση και η αίσθηση του εξαρτήματος είναι ανεξάρτητη από την εσωτερική αναπαράσταση και ως εκ τούτου μπορούμε να το προσαρμόσουμε με τον τρόπο που επιθυμούμε.
- Μπορούμε απλά να αλλάξουμε τις τιμές και έτσι να αλλάξουμε την εμφάνιση και την αίσθηση στο χρόνο εκτέλεσης.
Στοιχεία Java Swing
Το Swing έχει ένα μεγάλο σύνολο στοιχείων που μπορούμε να συμπεριλάβουμε στα προγράμματά μας και να επωφεληθούμε από τις πλούσιες λειτουργίες χρησιμοποιώντας τις οποίες μπορούμε να αναπτύξουμε εξαιρετικά προσαρμοσμένες και αποτελεσματικές εφαρμογές GUI.
Τι είναι λοιπόν ένα συστατικό;
Ένα στοιχείο μπορεί να οριστεί ως ένα στοιχείο ελέγχου που μπορεί να αναπαρασταθεί οπτικά και είναι συνήθως ανεξάρτητο. Έχει μια συγκεκριμένη λειτουργικότητα και αντιπροσωπεύεται ως ατομική τάξη στο Swing API.
Για παράδειγμα, Το class JButton in swing API είναι ένα στοιχείο κουμπιού και παρέχει τη λειτουργικότητα ενός κουμπιού.
Ένα ή περισσότερα στοιχεία σχηματίζουν μια ομάδα και αυτή η ομάδα μπορεί να τοποθετηθεί σε ένα 'Container'. Ένα κοντέινερ παρέχει ένα χώρο στον οποίο μπορούμε να προβάλλουμε στοιχεία και επίσης να διαχειριζόμαστε την απόσταση, τη διάταξή τους κ.λπ.
Στην Java, τα κοντέινερ χωρίζονται σε δύο τύπους όπως φαίνεται παρακάτω:
Μαθήματα Swing στην Ιάβα
Μια ιεραρχία Swing API στην Java εμφανίζεται παρακάτω:
Όπως φαίνεται από την παραπάνω ιεραρχία έχουμε κλάσεις κοντέινερ - πλαίσιο, παράθυρο διαλόγου, πάνελ, εφαρμογή, κ.λπ. Υπάρχουν επίσης κλάσεις συστατικών που προέρχονται από την κλάση JComponent του Swing API. Μερικές από τις τάξεις που κληρονομούν από το JComponent είναι JLabel, JList, JTextBox κ.λπ.
Μερικές από τις σημαντικές κατηγορίες του Swing API είναι οι εξής:
- JWindow: Η κλάση JWindow του Swing κληρονομεί άμεσα την κλάση Window. Η κλάση JWindow χρησιμοποιεί το 'BorderLayout' ως την προεπιλεγμένη διάταξη.
- JPanel: Το JPanel είναι απόγονος της κλάσης JComponent και βρίσκεται σε παρόμοιες γραμμές με τον πίνακα κατηγορίας AWT και έχει το 'FlowLayout' ως την προεπιλεγμένη διάταξη.
- JFrame: Το JFrame κατεβαίνει από την κατηγορία Frame. Τα στοιχεία που προστίθενται στο πλαίσιο ονομάζονται περιεχόμενο του πλαισίου.
- JLabel: Η κλάση JLabel είναι μια υποκατηγορία του JComponent. Χρησιμοποιείται για τη δημιουργία ετικετών κειμένου στην εφαρμογή.
- JButton: Η λειτουργία του μπουτόν στο Swing παρέχεται από το JButton. Μπορούμε να συσχετίσουμε μια συμβολοσειρά, ένα εικονίδιο ή και τα δύο με το αντικείμενο JButton.
- JTextField: Η κλάση JTextField παρέχει ένα πεδίο κειμένου στο οποίο μπορούμε να επεξεργαστούμε μία μόνο γραμμή κειμένου.
JFrame στην Ιάβα
Ένα πλαίσιο, γενικά, είναι ένα κοντέινερ που μπορεί να περιέχει άλλα στοιχεία όπως κουμπιά, ετικέτες, πεδία κειμένου κ.λπ. Ένα παράθυρο πλαισίου μπορεί να περιέχει έναν τίτλο, ένα περίγραμμα και επίσης μενού, πεδία κειμένου, κουμπιά και άλλα στοιχεία. Μια εφαρμογή πρέπει να περιέχει ένα πλαίσιο ώστε να μπορούμε να προσθέσουμε στοιχεία μέσα σε αυτήν.
Το Frame in Java Swing ορίζεται στην κλάση javax.swing.JFrame. Η κλάση JFrame κληρονομεί την κλάση java.awt.Frame. Το JFrame είναι σαν το κύριο παράθυρο της εφαρμογής GUI που χρησιμοποιεί swing.
Μπορούμε να δημιουργήσουμε ένα αντικείμενο παραθύρου JFrame χρησιμοποιώντας δύο προσεγγίσεις:
τι δεν μπορεί να βρει η στατική ανάλυση
# 1) Με την επέκταση της κλάσης JFrame
Η πρώτη προσέγγιση είναι η δημιουργία μιας νέας τάξης για την κατασκευή ενός πλαισίου. Αυτή η κλάση κληρονομείται από την κλάση JFrame του πακέτου javax.swing.
Το ακόλουθο πρόγραμμα εφαρμόζει αυτήν την προσέγγιση.
import javax.swing.*; class FrameInherited extends JFrame{ //inherit from JFrame class JFrame f; FrameInherited(){ JButton b=new JButton('JFrame_Button');//create button object b.setBounds(100,50,150, 40); add(b);//add button on frame setSize(300,200); setLayout(null); setVisible(true); } } public class Main { public static void main(String[] args) { new FrameInherited(); //create an object of FrameInherited class } }
Παραγωγή:
# 2) Με την εγκατάσταση της κλάσης JFrame
import javax.swing.*; public class Main { public static void main(String[] args) { JFrame f=new JFrame('JFrameInstanceExample');//create a JFrame object JButton b=new JButton('JFrameButton');//create instance of JButton b.setBounds(100,50,150, 40);//dimensions of JButton object f.add(b);//add button in JFrame f.setSize(300,200);//set frame width = 300 and height = 200 f.setLayout(null);//no layout manager specified f.setVisible(true);//make the frame visible } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, δημιουργήσαμε ένα πλαίσιο από την κλάση JFrame δημιουργώντας μια παρουσία της κλάσης JFrame.
JPanel στην Ιάβα
Ένας πίνακας είναι ένα στοιχείο που περιέχεται μέσα σε ένα παράθυρο πλαισίου. Ένα πλαίσιο μπορεί να έχει περισσότερα από ένα πάνελ συστατικά μέσα του με κάθε στοιχείο πίνακα να έχει πολλά άλλα εξαρτήματα.
Με ευκολότερους όρους, μπορούμε να χρησιμοποιήσουμε πίνακες για να χωρίσουμε το πλαίσιο. Κάθε πλαίσιο ομαδοποιεί πολλά άλλα συστατικά μέσα σε αυτό. Με άλλα λόγια, χρησιμοποιούμε πάνελ για να οργανώσουμε στοιχεία μέσα στο πλαίσιο.
Η κλάση swing API που εφαρμόζει το στοιχείο του πίνακα είναι JPanel. Η κλάση JPanel κληρονομεί από το JComponent και έχει την προεπιλεγμένη διάταξη του FlowLayout.
Το ακόλουθο πρόγραμμα δείχνει τη δημιουργία ενός κοντέινερ πίνακα σε ένα πλαίσιο χρησιμοποιώντας κλάσεις πακέτων javax.swing.
import javax.swing.*; class JPanelExample { JPanelExample(){ JFrame frame = new JFrame('Panel Example'); //create a frame JPanel panel = new JPanel(); //Create JPanel Object panel.setBounds(40,70,100,100); //set dimensions for Panel JButton b = new JButton('ButtonInPanel'); //create JButton object b.setBounds(60,50,80,40); //set dimensions for button panel.add(b); //add button to the panel frame.add(panel); //add panel to frame frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } } public class Main { public static void main(String[] args) { new JPanelExample(); //create an object of FrameInherited class } }
Παραγωγή:
Εδώ έχουμε ένα πλαίσιο. Μέσα στο πλαίσιο, δημιουργούμε ένα πάνελ. Στη συνέχεια, μέσα στον πίνακα, δημιουργούμε ένα κουμπί. Με αυτόν τον τρόπο μπορούμε να χρησιμοποιήσουμε έναν πίνακα για να κρατήσουμε τα άλλα στοιχεία.
JTextArea στην Ιάβα
Το TextArea καθορίζει ένα επεξεργάσιμο πεδίο κειμένου. Μπορεί να έχει πολλές γραμμές. Η κλάση swing που καθορίζει την περιοχή κειμένου είναι JTextArea και κληρονομεί την κλάση JTextComponent.
δημόσια τάξη JTextArea επεκτείνει το JTextComponent
Η κλάση JTextArea περιέχει 4 κατασκευαστές που μας επιτρέπουν να δημιουργήσουμε μια περιοχή κειμένου με διάφορες επιλογές.
- JTextArea (): Προεπιλεγμένος κατασκευαστής. Δημιουργήστε μια κενή περιοχή κειμένου.
- JTextArea (Συμβολοσειρές): Δημιουργεί ένα textarea με το s ως την προεπιλεγμένη τιμή.
- JTextArea (int σειρά, int στήλη): Δημιουργεί μια περιοχή κειμένου με μια καθορισμένη σειρά x στήλη.
- JTextArea (String s, int σειρά, int στήλη): Δημιουργεί ένα κείμενο are2a με καθορισμένη σειρά x στήλη και προεπιλεγμένη τιμή s.
Το ακόλουθο πρόγραμμα Java δείχνει ένα παράδειγμα του στοιχείου JTextArea στο swing.
import javax.swing.*; class JTextAreaExample { JTextAreaExample(){ JFrame frame= new JFrame(); JTextArea t_area=new JTextArea('JTextArea example'); //create object of JTextArea t_area.setBounds(10,30, 150,100); //set its dimensions frame.add(t_area); //add it to the frame frame.setSize(200,200); frame.setLayout(null); frame.setVisible(true); } } public class Main { public static void main(String[] args) { new JTextAreaExample(); //create an object of TextAreaExample class } }
Παραγωγή:
JButton στην Ιάβα
Ένα κουμπί είναι ένα στοιχείο που χρησιμοποιείται για τη δημιουργία ενός κουμπιού με ένα όνομα ή μια ετικέτα. Σε εξέλιξη, η τάξη που δημιουργεί ένα κουμπί με ετικέτα είναι το JButton. Το JButton κληρονομεί την κλάση AbstractButton. Μπορούμε να συσχετίσουμε το συμβάν ActionListener με το κουμπί για να το κάνουμε να κάνει κάποια ενέργεια όταν πιέζεται.
Ας εφαρμόσουμε ένα παράδειγμα προγράμματος για το JButton σε εναλλαγές Java.
import javax.swing.*; public class Main { public static void main(String[] args) { JFrame frame=new JFrame('JButton Example'); //create JFrame object JButton button=new JButton('Button'); //Create a JButton object button.setBounds(50,50,75,35); //set dimensions for button frame.add(button); //add button to the frame frame.setSize(250,200); frame.setLayout(null); frame.setVisible(true); } }
Παραγωγή:
JList In Java
Μια λίστα αποτελείται από πολλά στοιχεία κειμένου. Οι χρήστες μπορούν είτε να επιλέξουν ένα μεμονωμένο στοιχείο ή πολλά στοιχεία κάθε φορά. Η κλάση που εφαρμόζει τη λίστα στο swing API είναι JList. Το JList είναι απόγονος της τάξης JComponent.
Παρακάτω δίνονται οι κατασκευαστές της κατηγορίας JList.
- JList (): Προεπιλεγμένος κατασκευαστής που δημιουργεί μια κενή λίστα μόνο για ανάγνωση.
- JList (array [] listItem): Δημιουργήστε ένα JList που περιέχει αρχικά στοιχεία του πίνακα listItem.
- JList (ListModel dataModel): Δημιουργεί μια λίστα με στοιχεία από το καθορισμένο μοντέλο dataModel.
Μια απλή επίδειξη του στοιχείου JList δίνεται παρακάτω.
import javax.swing.*; public class Main { public static void main(String[] args) { JFrame frame= new JFrame('JList Example'); //create a list model and add items to it DefaultListModel colors = new DefaultListModel<>(); colors.addElement('Red'); colors.addElement('Green'); colors.addElement('Blue'); //create JList object and add listModel to it JList colorsList = new JList<>(colors); colorsList.setBounds(100,100, 75,50); frame.add(colorsList); //add list to the frame frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } }
Παραγωγή:
Στο παραπάνω πρόγραμμα, καθορίζουμε πρώτα ένα listModel με χρωματικές καταχωρήσεις σε αυτό. Στη συνέχεια, δημιουργούμε ένα αντικείμενο JList και προσθέτουμε το listModel σε αυτό. Στη συνέχεια, το αντικείμενο JList προστίθεται στο αντικείμενο πλαισίου το οποίο στη συνέχεια εμφανίζεται.
JComboBox στην Ιάβα
Η κλάση JCombobox εμφανίζει μια λίστα επιλογών από τις οποίες ένας χρήστης μπορεί να ορίσει μια επιλογή. Η επιλεγμένη επιλογή βρίσκεται στην κορυφή. Το JComboBox προέρχεται από την κλάση JComponent.
Τα παρακάτω είναι οι κατασκευαστές που παρέχονται από την κλάση JComboBox:
- JComboBox (): Προεπιλεγμένος κατασκευαστής που δημιουργεί ένα ComboBox με το προεπιλεγμένο μοντέλο δεδομένων.
- JComboBox (αντικείμενα αντικειμένου []): Αυτός ο κατασκευαστής δημιουργεί ένα ComboBox που έχει στοιχεία ως στοιχεία των δεδομένων στοιχείων πίνακα.
- JComboBox (Vector στοιχεία): Αυτός ο κατασκευαστής διαβάζει τα στοιχεία του δεδομένου διανύσματος και κατασκευάζει ένα ComboBox με αυτά τα στοιχεία ως στοιχεία του.
Η κλάση JComboBox παρέχει επίσης μεθόδους για προσθήκη / αφαίρεση στοιχείων, προσθήκη ActionListener, ItemListener κ.λπ.
qa ερωτήσεις και απαντήσεις συνεντεύξεων αναλυτών pdf
Το ακόλουθο παράδειγμα δείχνει την εφαρμογή JComboBox στην Java.
import javax.swing.*; class ComboBoxExample { JFrame frame; ComboBoxExample(){ frame=new JFrame('ComboBox Example'); //create a string array String country[]={'India','SriLanka','Singapore','Maldives','SeyChelles'}; //create a combobox object with given string array JComboBox countries=new JComboBox(country); countries.setBounds(50, 50,90,20); frame.add(countries); //add it to the frame frame.setLayout(null); frame.setSize(200,300); frame.setVisible(true); } } public class Main { public static void main(String arg[]) { new ComboBoxExample(); } }
Παραγωγή:
JSlider Στην Ιάβα
Ένα ρυθμιστικό μας επιτρέπει να επιλέξουμε ένα συγκεκριμένο εύρος τιμών. Στο Java Swing API, το JSlider είναι η κλάση που χρησιμοποιείται για την εφαρμογή του ρυθμιστικού.
Τα παρακάτω είναι οι κατασκευαστές που παρέχονται από την κατηγορία JSlider.
- JSlider (): Ένας προεπιλεγμένος κατασκευαστής που δημιουργεί ένα ρυθμιστικό με 50 ως αρχική τιμή και εύρος 0 -100.
- JSlider (int προσανατολισμός): Αυτός ο κατασκευαστής δημιουργεί ένα ρυθμιστικό ακριβώς όπως παραπάνω αλλά με καθορισμένο προσανατολισμό. Η τιμή προσανατολισμού μπορεί να είναι JSlider.HORIZONTAL ή JSlider.VERTICAL.
- JSlider (int min, int max): Αυτός ο κατασκευαστής χρησιμοποιείται για να δημιουργήσει ένα οριζόντιο ρυθμιστικό χρησιμοποιώντας τα δεδομένα min και max.
- JSlider (int min, int max, int value): Αυτός ο κατασκευαστής δημιουργεί ένα ρυθμιστικό οριζόντιο με την καθορισμένη τιμή min, max και value.
- JSlider (int προσανατολισμός, int min, int max, int value): Αυτός ο κατασκευαστής κατασκευάζει ένα ρυθμιστικό με καθορισμένο προσανατολισμό, min, max και τιμή.
Το παρακάτω πρόγραμμα δείχνει το JSlider στην Java με τσιμπούρια. Αυτό το πρόγραμμα δείχνει επίσης τη χρήση των μεθόδων που υποστηρίζονται από την κλάση JSlider.
import javax.swing.*; class SliderExample extends JFrame { public SliderExample() { //create a slider object JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 50, 25); //set major and minor ticks for the slider slider.setMinorTickSpacing(2); slider.setMajorTickSpacing(10); slider.setPaintTicks(true); slider.setPaintLabels(true); JPanel panel = new JPanel(); panel.add(slider); //add slider to the panel add(panel); } } public class Main{ public static void main(String s[]) { SliderExample frame=new SliderExample(); frame.pack(); frame.setVisible(true); } }
Παραγωγή:
Χειρισμός εκδηλώσεων στην Java
Ένα συμβάν μπορεί να οριστεί ως αλλαγή κατάστασης ενός αντικειμένου. Από την άποψη του GUI, ένα συμβάν συμβαίνει όταν ο τελικός χρήστης αλληλεπιδρά με τα στοιχεία GUI. Τα συμβάντα που ενεργοποιούνται στο GUI μπορεί να είναι το κλικ ενός κουμπιού, η κύλιση, η επιλογή στοιχείων λίστας, η αλλαγή κειμένου κ.λπ.
Τα συμβάντα που εμφανίζονται στο GUI που αναφέρονται παραπάνω είναι κυρίως γεγονότα προσκηνίου. Μπορούμε επίσης να έχουμε κάποια γεγονότα φόντου όπως ολοκλήρωση λειτουργίας φόντου, λήξη χρονοδιακόπτη κ.λπ.
Ο χειρισμός συμβάντων είναι ένας μηχανισμός μέσω του οποίου πραγματοποιείται μια ενέργεια όταν συμβαίνει ένα συμβάν. Για αυτό, ορίζουμε μια μέθοδο που ονομάζεται επίσης χειριστής συμβάντων που καλείται όταν συμβαίνει ένα συμβάν. Η Java χρησιμοποιεί έναν τυπικό μηχανισμό που ονομάζεται 'Μοντέλο εκδήλωσης εκπροσώπησης' για τη δημιουργία και τη διαχείριση συμβάντων.
Το μοντέλο εκδήλωσης αντιπροσωπείας αποτελείται από:
# 1) Πηγή: Η Πηγή του συμβάντος είναι το αντικείμενο. Το αντικείμενο στο οποίο συμβαίνει ένα συμβάν είναι η πηγή και η πηγή είναι υπεύθυνη για την αποστολή πληροφοριών σχετικά με το συμβάν στο χειριστή συμβάντων.
# 2) Ακροατής: Ο ακροατής δεν είναι παρά ο χειριστής συμβάντων που είναι υπεύθυνος για τη λήψη ενέργειας όταν συμβαίνει ένα συμβάν. Στην Java, ένας ακροατής είναι ένα αντικείμενο που περιμένει ένα συμβάν. Μόλις συμβεί το συμβάν, ο ακροατής επεξεργάζεται το συμβάν.
Η απαίτηση είναι η εγγραφή του ακροατή στο αντικείμενο έτσι ώστε όταν συμβαίνει ένα συμβάν, ο ακροατής μπορεί να το επεξεργαστεί.
Για παράδειγμα,για ένα συμβάν κλικ κουμπιού, μπορούμε να έχουμε την ακόλουθη ακολουθία βημάτων.
- Ο χρήστης κάνει κλικ στο κουμπί που δημιουργεί ένα συμβάν κλικ.
- Δημιουργείται το κατάλληλο αντικείμενο κλάσης συμβάντων και τα δεδομένα προέλευσης και συμβάντων διαβιβάζονται σε αυτό το αντικείμενο.
- Αυτό το αντικείμενο συμβάντος μεταβιβάζεται στη συνέχεια στην κλάση ακροατή που είναι εγγεγραμμένη στο αντικείμενο.
- Ο ακροατής εκτελεί και επιστρέφει.
Τώρα ας συζητήσουμε μερικούς από τους ακροατές που παρέχονται από την Java.
ActionListener στην Ιάβα
Το ActionListener είναι ο ακροατής για ένα κουμπί ή ένα στοιχείο μενού. Όταν κάνουμε κλικ σε ένα κουμπί, το κουμπί Listener που εμπλέκεται είναι το ActionListener. Το actionListener ειδοποιείται στο ActionEvent.
Το πακέτο συμβάντων java.awt.an καθορίζει τη διεπαφή ActionListener. Αυτή η διεπαφή έχει μόνο μία μέθοδο actionPerformed ().
δημόσιο αφηρημένο κενό δράσης Εκτελεσμένο (ActionEvent e);
Όταν κάνετε κλικ σε ένα καταχωρημένο στοιχείο όπως ένα κουμπί, τότε η μέθοδος actionPerformed () καλείται αυτόματα.
Η πιο συνηθισμένη προσέγγιση για να συμπεριλάβετε το ActionListener στο πρόγραμμα είναι να εφαρμόσετε τη διεπαφή ActionListener και, στη συνέχεια, να εφαρμόσετε τη μέθοδο actionPerformed ().
Τα βήματα για την εφαρμογή της τάξης ActionListener είναι τα εξής:
# 1) Εφαρμόστε τη διεπαφή ActionListerner.
δημόσια τάξη ActionListenerImpl Εφαρμογές ActionListener
# 2) Καταχωρήστε το στοιχείο σε αυτόν τον ακροατή. Εάν το κουμπί είναι ένα στοιχείο που θέλουμε να εγγραφούμε στον ακροατή, θα το καταχωρήσουμε ως εξής:
button.addActionListener (instanceOfListenerclass);
# 3) Εφαρμογή / παράκαμψη της μεθόδου actionPerformed ().
public void actionPerformed (ActionEvent e){ //code to perform action }
Έτσι, χρησιμοποιώντας τα παραπάνω βήματα, μπορούμε να συσχετίσουμε οποιοδήποτε συμβάν με το στοιχείο GUI.
Το ακόλουθο παράδειγμα δείχνει ένα κουμπί Κάντε κλικ στο συμβάν χρησιμοποιώντας το ActionListener.
import javax.swing.*; import java.awt.event.*; public class Main { public static void main(String[] args) { JFrame frame=new JFrame('Button Click Example'); final JTextField text_field=new JTextField(); //JTextField object text_field.setBounds(50,100, 150,20); JButton click_button=new JButton('Click Me!!!'); //JButton object click_button.setBounds(20,50,75,30); click_button.addActionListener(new ActionListener(){ //add an event and take action public void actionPerformed(ActionEvent e){ text_field.setText('You Clicked the button'); } }); //add button and textfield to the frame frame.add(click_button);frame.add(text_field); frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } }
Παραγωγή:
Το παραπάνω πρόγραμμα υλοποιεί ένα συμβάν ActionListener. Το συμβάν είναι το συμβάν κλικ κουμπιού και μαζί του, έχουμε συσχετίσει ένα ActionListener που εμφανίζει το κείμενο στο πεδίο κειμένου κάνοντας κλικ στο κουμπί.
KeyListener στην Ιάβα
Όποτε υπάρχει αλλαγή στην κατάσταση του κλειδιού, ειδοποιείται ένας KeyListener. Ακριβώς όπως το ActionListener, το KeyListener βρίσκεται επίσης στο πακέτο java.awt.event.
Η διεπαφή KeyListener παρέχει τις ακόλουθες μεθόδους:
δημόσιο αφηρημένο άκυρο πλήκτρο Pressed (KeyEvent e);
public abstract void keyReleased (KeyEvent e).
public abstract void keyTyped (KeyEvent e);
Πρέπει να εφαρμόσουμε τις παραπάνω μεθόδους για να συσχετίσουμε τα βασικά συμβάντα με το στοιχείο. Το αφήνουμε στον χρήστη να εφαρμόσει ένα παράδειγμα KeyListener χρησιμοποιώντας κινήσεις στην Java.
Διατάξεις Swing στην Java
Όταν τακτοποιούμε διάφορα συστατικά σε ένα δοχείο, τότε λέμε ότι σχεδιάζουμε αυτά τα συστατικά. Έτσι, μια διάταξη μπορεί να οριστεί ως η τοποθέτηση των συστατικών σε ένα δοχείο.
Εφόσον υπάρχουν λιγότερα συστατικά, μπορούν να τοποθετηθούν με μεταφορά-απόθεση χειροκίνητα. Όμως γίνεται δύσκολο να τακτοποιηθούν τα στοιχεία σε μεγάλο αριθμό. Σε αυτό το σημείο, ο Διαχειριστής διάταξης της Java έρχεται στη βοήθειά μας.
Το LayoutManager είναι υπεύθυνο για τη διάταξη των στοιχείων στις εφαρμογές GUI. Το LayoutManager είναι μια διεπαφή και εφαρμόζεται από όλες τις τάξεις διαχείρισης διάταξης. Η Java παρέχει τις ακόλουθες τάξεις LayoutManager.
LayoutManager | Περιγραφή |
---|---|
javax.swing.GroupLayout | Ομαδοποιεί τα συστατικά και στη συνέχεια τα τοποθετεί στο δοχείο. |
java.awt.BorderLayout | Τα εξαρτήματα σχεδιάζονται για να χωρέσουν σε πέντε κατευθύνσεις, δηλαδή κέντρο, ανατολικά, δυτικά, νότια, βόρεια. |
java.awt.FlowLayout | Αυτή είναι η προεπιλεγμένη διάταξη. Βάζει τα εξαρτήματα στην κατευθυντική ροή. |
java.awt.GridLayout | Τακτοποιεί τα εξαρτήματα σε ορθογώνιο πλέγμα. |
javax.swing.BoxLayout | Τα στοιχεία είναι διατεταγμένα σε ένα κουτί. |
java.awt.CardLayout | Κάθε στοιχείο θεωρείται ως κάρτα σε μια τράπουλα και κάθε φορά μόνο ένα στοιχείο είναι ορατό. |
java.awt.GridBagLayout | Τακτοποιεί τα συστατικά κάθετα, οριζόντια ή ακόμη και κατά μήκος των γραμμών βάσης τους. Τα συστατικά δεν χρειάζεται να έχουν το ίδιο μέγεθος. |
javax.swing.ScrollPaneLayout | Χρησιμοποιείται από την κλάση JScrollPane και είναι υπεύθυνη για τη διάταξη εξαρτημάτων σε κυλιόμενα δοχεία. |
javax.swing.SpringLayout κ.λπ. | Παρέχεται ένα σύνολο περιορισμών όπως η οριζόντια και κατακόρυφη απόσταση μεταξύ των εξαρτημάτων κ.λπ. και τα εξαρτήματα διατάσσονται σύμφωνα με αυτά τα σύνολα περιορισμών. |
Σε αυτό το σεμινάριο, θα συζητήσουμε μόνο τα FlowLayout και GridLayout.
FlowLayout στην Ιάβα
Το FlowLayout τακτοποιεί τα εξαρτήματα σε κατεύθυνση ροής, το ένα μετά το άλλο. Αυτή είναι η προεπιλεγμένη διάταξη για τα κοντέινερ όπως το Panel και το Applet.
Η κλάση FlowLayout στην Java που αντιπροσωπεύει τον διαχειριστή FlowLayout περιέχει τα ακόλουθα πεδία και κατασκευαστές.
Πεδία της κατηγορίας FlowLayout
- δημόσιο στατικό τελικό int LEADING
- δημόσιο στατικό τελικό int TRAILING
- δημόσιο στατικό τελικό int ΑΡΙΣΤΕΡΑ
- δημόσιο στατικό τελικό int RIGHT
- δημόσιο στατικό τελικό int CENTER
Τα παραπάνω πεδία καθορίζουν τις θέσεις στις οποίες τα στοιχεία θα τοποθετηθούν ή θα ευθυγραμμιστούν.
Κατασκευαστές της κατηγορίας FlowLayout
- FlowLayout (): Αυτός είναι ένας προεπιλεγμένος κατασκευαστής. Αυτός ο κατασκευαστής δημιουργεί μια διάταξη ροής που έχει κεντρικά ευθυγραμμισμένα στοιχεία με προεπιλεγμένο κενό 5 μονάδων στην οριζόντια και κατακόρυφη κατεύθυνση.
- FlowLayout (int align): Αυτός ο κατασκευαστής δημιουργεί διάταξη ροής με την καθορισμένη τιμή ευθυγράμμισης και με οριζόντιο και κατακόρυφο διάκενο 5 μονάδων.
- FlowLayout (int align, int hgap, int vgap): Δημιουργεί διάταξη ροής με καθορισμένη τιμή ευθυγράμμισης και οριζόντιο και κατακόρυφο κενό.
Δίνεται παρακάτω είναι ένα παράδειγμα του FlowLayout στην Java.
import javax.swing.*; import java.awt.*; class FlowLayoutClass { JFrame frame; FlowLayoutClass() { frame = new JFrame('FlowLayout Example'); //create button components JButton b1 = new JButton('A'); JButton b2 = new JButton('B'); JButton b3 = new JButton('C'); JButton b4 = new JButton('D'); JButton b5 = new JButton('E'); //add components to the frame frame.add(b1); frame.add(b2); frame.add(b3); frame.add(b4); frame.add(b5); //set layout as 'FlowLayout.CENTER' frame.setLayout(new FlowLayout(FlowLayout.CENTER)); //setting flow layout of right alignment frame.setSize(300, 300); frame.setVisible(true); } } public class Main{ public static void main(String[] args) { new FlowLayoutClass(); } }
Παραγωγή:
GridLayout στην Ιάβα
Χρησιμοποιώντας το GridLayout μπορούμε να σχεδιάσουμε τα στοιχεία με ορθογώνιο τρόπο πλέγματος, δηλαδή κάθε στοιχείο είναι διατεταγμένο σε κάθε ορθογώνιο.
Κατασκευαστές της κατηγορίας GridLayout
- GridLayout (): προεπιλεγμένος κατασκευαστής που δημιουργεί μια διάταξη πλέγματος που έχει μία στήλη ανά ένα στοιχείο στη σειρά.
- GridLayout (σειρές int, στήλες int): Αυτός ο κατασκευαστής δημιουργεί διάταξη πλέγματος με καθορισμένες σειρές και στήλες. Δεν υπάρχει κενό μεταξύ των συστατικών.
- GridLayout (int σειρές, int στήλες, int hgap, int vgap): Χρησιμοποιώντας αυτόν τον κατασκευαστή, δημιουργούμε διάταξη πλέγματος με καθορισμένες σειρές και στήλες και οριζόντια και κάθετα κενά.
Το ακόλουθο παράδειγμα εφαρμόζει το GridLayout στην Java.
import javax.swing.*; import java.awt.*; class GridLayoutClass { JFrame frame; GridLayoutClass() { frame=new JFrame('GridLayout Example'); //create components to be laid out as per GridLayout JButton b1=new JButton('P'); JButton b2=new JButton('Q'); JButton b3=new JButton('R'); JButton b4=new JButton('S'); JButton b5=new JButton('T'); JButton b6=new JButton('U'); JButton b7=new JButton('V'); JButton b8=new JButton('W'); JButton b9=new JButton('X'); //add components to the frame frame.add(b1);frame.add(b2);frame.add(b3);frame.add(b4);frame.add(b5); frame.add(b6);frame.add(b7);frame.add(b8);frame.add(b9); //set frame layout to GridLayout of 3 rows and 3 columns frame.setLayout(new GridLayout(3,3)); frame.setSize(300,300); frame.setVisible(true); } } public class Main{ public static void main(String[] args) { new GridLayoutClass(); } }
Παραγωγή:
Περιορισμοί στην Java
Εάν ελέγξουμε τα παραδείγματα προγραμματισμού σε αυτό το σεμινάριο πριν από το θέμα διάταξης, μπορούμε να δούμε ότι έχουμε ορίσει τη διάταξη ως μηδενική σε αυτά τα παραδείγματα (setLayout (null)). Έχουμε δει ότι όταν χρησιμοποιούμε διαχειριστές διάταξης στο πρόγραμμά μας, τοποθετούν αυτόματα τα στοιχεία.
Όταν δεν χρησιμοποιούνται διαχειριστές διάταξης, μπορούμε να χρησιμοποιήσουμε τη μέθοδο setBounds στο μέγεθος και τη θέση του στοιχείου. Έτσι, η μέθοδος setBounds χρησιμοποιείται για να τοποθετήσετε χειροκίνητα το στοιχείο και επίσης να ορίσετε το μέγεθος.
Η γενική σύνταξη της μεθόδου setBounds έχει ως εξής:
setBounds (int x-συντεταγμένη, int y - συντεταγμένη, int πλάτος, int ύψος)
Ας εφαρμόσουμε τώρα ένα παράδειγμα της μεθόδου SetBounds.
import javax.swing.*; public class Main { public static void main(String arg[]) { JFrame frame = new JFrame('SetBounds Method Test'); frame.setSize(375, 250); // Set layout as null frame.setLayout(null); // Create a Button JButton button = new JButton('ButtonWithSetBounds'); // Set position and size of a button using setBounds button.setBounds(80,30,200,40); frame.add(button); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } }
Παραγωγή:
ποιο είναι το καλύτερο λειτουργικό σύστημα για υπολογιστή
Στο παραπάνω πρόγραμμα, έχουμε ένα στοιχείο Button. Δεν έχουμε ορίσει διάταξη αλλά χρησιμοποιήσαμε τη μέθοδο setBounds για να ορίσουμε τη θέση και τις διαστάσεις της.
Swing Vs JavaFX
Κούνια | JavaFX |
---|---|
Το Swing παρέχει ένα API για τη δημιουργία στοιχείων GUI. | Το JavaFX παρέχει σενάρια και γρήγορη ανάπτυξη διεπαφής χρήστη που σχετίζεται με το πρόγραμμα δημιουργίας οθόνης. |
Δεν πρόκειται να προστεθεί νέα λειτουργία στο Swing σε μελλοντικές εκδόσεις. | Το JavaFX παρέχει πλούσια λειτουργικότητα και έχει τη δυνατότητα για περισσότερες δυνατότητες σε μελλοντικές εκδόσεις. |
Μπορούμε να δημιουργήσουμε όλα τα τυπικά στοιχεία χρησιμοποιώντας το Swing API. | Το JavaFX μας επιτρέπει να δημιουργήσουμε πλούσια στοιχεία GUI χρησιμοποιώντας προηγμένη εμφάνιση και αίσθηση. |
Ένας μεγάλος αριθμός εξαρτημάτων υπάρχουν στο Swing. | Το JavaFX έχει συγκριτικά μικρότερο αριθμό στοιχείων. |
Το Swing είναι μια πλήρως εξοπλισμένη βιβλιοθήκη UI. | Το JavaFX είναι ένα νέο και επερχόμενο API με πλούσια στοιχεία διεπαφής χρήστη. |
Το Swing έχει χαλαρή υποστήριξη MVC. | Το JavaFX υποστηρίζει το μοτίβο MVC με συνέπεια. |
Συχνές Ερωτήσεις
Ε # 1) Το Swing εξακολουθεί να χρησιμοποιείται στην Java;
Απάντηση: Ναι, το Swing χρησιμοποιείται ακόμα στην Java και αυτό είναι πολύ βαρύ. Μερικές φορές χρησιμοποιείται ως πλήρης αντικατάσταση του AWT. Μερικές φορές χρησιμοποιείται επίσης μαζί με ορισμένα από τα στοιχεία AWT. Χρησιμοποιείται ακόμη και με το πιο πρόσφατο JavaFX. Έτσι το Swing χρησιμοποιείται ακόμα και θα χρησιμοποιηθεί για πολύ καιρό ακόμη.
Ε # 2) Πώς λειτουργεί το Java Swing;
Απάντηση: Το Swing in Java γράφεται πάνω από το πλαίσιο AWT. Έτσι, ο χειρισμός των εκδηλώσεων του AWT κληρονομείται από το swing πλήρως. Το Swing παρέχει επίσης μεγάλο αριθμό στοιχείων που μπορούμε να χρησιμοποιήσουμε για την ανάπτυξη αποτελεσματικών εφαρμογών GUI.
Q # 3) Το Swing ακολουθεί το MVC;
Απάντηση: Το Swing API έχει χαλαρή υποστήριξη MVC. Το μοντέλο αντιπροσωπεύει τα δεδομένα του στοιχείου. Το swing στοιχείο έχει ένα ξεχωριστό στοιχείο που ονομάζεται Model, ενώ το Controller και το View συνδυάζονται μεταξύ τους σε στοιχεία UI. Αυτό το clubbing επιτρέπει στην ταλάντευση να έχει μια βολική εμφάνιση και αίσθηση.
Q # 4) Είναι το JavaFX καλύτερο από το Swing;
Απάντηση: Το Swing υπάρχει εδώ και πολύ καιρό και έχει πιο ώριμη υποστήριξη IDE. Είχε επίσης μια πολύ μεγάλη βιβλιοθήκη με στοιχεία. Το JavaFX είναι συγκριτικά νεότερο και έχει μια μικρή βιβλιοθήκη στοιχείων, αλλά με πιο συνεπείς ενημερώσεις και συνεπή υποστήριξη MVC. Έτσι εξαρτάται από το πώς το JavaFX αναπτύσσεται περαιτέρω και παρέχει περισσότερες δυνατότητες.
Q # 5) Ποιο είναι καλύτερο AWT ή Swing;
Απάντηση: Το Swing είναι κατασκευασμένο πάνω από το AWT και παρέχει ένα πλούσιο και μεγάλο σύνολο στοιχείων UI σε σύγκριση με το AWT. Τα εξαρτήματα Swing μπορούν επίσης να έχουν την εμφάνιση και την αίσθηση τους σε σχέση με τα εξαρτήματα AWT που έχουν μια ματιά και αίσθηση του λειτουργικού συστήματος.
Τα εξαρτήματα ταλάντευσης είναι ταχύτερα από το AWT. Όλοι αυτοί οι παράγοντες κάνουν την ταλάντευση καλύτερη από το AWT.
Περισσότερα για το Java Swing
Όταν δημιουργείτε μια εφαρμογή, αρχικά θα πρέπει να έχετε ένα βασικό κοντέινερ και πρέπει να προσθέσετε τα απαιτούμενα στοιχεία, όπως κουμπιά και πεδία κειμένου στο κοντέινερ.
Και όταν κάνετε κλικ ή εκτελείτε οποιαδήποτε λειτουργία σε οποιοδήποτε πεδίο, το συμβάν θα συμβεί και ο κώδικάς σας θα πρέπει να ακούει τα συμβάντα και επίσης να χειρίζεται το συμβάν.
Δοχείο Swing
Ένα κοντέινερ είναι ένα ριζικό στοιχείο για μια εφαρμογή. Όλα τα άλλα συστατικά προστίθενται σε αυτήν τη ρίζα και σχηματίζει μια ιεραρχία.
Υπάρχουν τρεις κατηγορίες κοντέινερ:
- JFrame
- JDialog
- JApplet
Επίδειξη κοντέινερ χρησιμοποιώντας JFrame:
import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; public class ContainerDemo { public static void main(String[] args) { JFrame baseFrame =new JFrame(); baseFrame.setTitle('Base Container'); JPanel contentPane=new JPanel(); contentPane.setBackground(Color.pink); baseFrame.setSize(400, 400); baseFrame.add(contentPane); baseFrame.setDefaultCloseOperation(baseFrame.EXIT_ON_CL OSE); baseFrame.setVisible(true); } }
Όταν εκτελείτε το παραπάνω πρόγραμμα, θα λάβετε την παρακάτω έξοδο.
Συστατικά
Η κλάση JComponent είναι μια βασική κατηγορία για όλα τα εξαρτήματα σε μια κούνια.
Τα συστατικά που χρησιμοποιούνται συχνά περιλαμβάνουν,
- JButton
- JTextField
- JTextArea
- JRadioButton
- JComboBox κ.λπ.
Όλα αυτά τα στοιχεία θα πρέπει να προστεθούν στο κοντέινερ εάν όχι, δεν θα εμφανιστούν στην εφαρμογή.
Παράδειγμα:
Για να δημιουργήσετε την παρουσία κουμπιού,
JButton clickButton = νέο JButton ();
Για να προσθέσετε το κουμπί στο κοντέινερ,
myFrame.add ();
Χειρισμός εκδηλώσεων
Όλες οι Εφαρμογές καθοδηγούνται από γεγονότα, όπως κλικ σε κουμπιά, κλικ ποντικιού, εισαγωγή κειμένου χρήστη κ.λπ.
Με μια εσωτερική τάξη, μπορείτε να χειριστείτε το συμβάν με τη λογική σας όπως φαίνεται παρακάτω.
public class ContainerDemo { public void createApp() { JFrame baseFrame =new JFrame(); JPanel contentPane=new JPanel(); baseFrame.setTitle('Base Container'); baseFrame.setSize(400, 400); baseFrame.add(contentPane); JButton demoButton =new JButton('click'); demoButton.setBounds(100,95,95,30); JTextArea result =new JTextArea(); result.setBounds(130,140,95,30); contentPane.add(demoButton); contentPane.add(result); baseFrame.setDefaultCloseOperation(baseFrame.EXIT_ON_CL OSE); baseFrame.setVisible(true); demoButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { result.setText('button clicked'); } }); } public static void main(String[] args) { ContainerDemo c =new ContainerDemo(); c.createApp(); } }
συμπέρασμα
Σε αυτό το σεμινάριο, έχουμε αγγίξει τη βάση με το Swing API που παρέχεται από την Java για τη δημιουργία εφαρμογών GUI. Έχουμε συζητήσει τα κύρια δοχεία και εξαρτήματα ταλάντευσης και την εφαρμογή τους.
Συζητήσαμε επίσης τον χειρισμό εκδηλώσεων στο Swing. Αν και ο μηχανισμός χειρισμού συμβάντων είναι AWT, το swing εφαρμόζει τα γεγονότα με αποτελεσματικό τρόπο. Στη συνέχεια, συζητήσαμε τους διάφορους διαχειριστές διάταξης που παρέχονται από το Swing API που μας επιτρέπουν να σχεδιάσουμε ή να τακτοποιήσουμε διάφορα στοιχεία στις εφαρμογές Swing GUI.
=> Ανατρέξτε στον τέλειο οδηγό εκπαίδευσης Java εδώ.
Συνιστώμενη ανάγνωση
- Εκμάθηση Java Reflection με παραδείγματα
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java
- Εκμάθηση Java Συλλογές Πλαίσιο (JCF)
- Πρόσβαση τροποποιητών σε Java - Εκμάθηση με παραδείγματα
- Java String με String Buffer και String Builder Tutorial
- Εισαγωγή στη γλώσσα προγραμματισμού Java - Video Tutorial