This shows you the differences between two versions of the page.
|
swing:panels [2015/05/04 05:43] gthanos |
swing:panels [2016/02/26 11:15] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Panels ====== | ||
| - | |||
| - | Σε πραγματικές εφαρμογές θέλουμε να φτιάξουμε σύνθετα παράθυρα που έχουν πολλά διαφορετικά κουμπιά σε διαφορετικές περιοχές. Κάτι τέτοιο δεν μπορούμε να το κάνουμε μόνο με τα layouts που είδαμε προηγούμενα. | ||
| - | |||
| - | Ένας τρόπος για να φτιάξετε πολύπλοκα layouts είναι να χρησιμοποιήσετε Panels. Κάθε panel ανήκει στην κλάση [[http://docs.oracle.com/javase/7/docs/api/javax/swing/JPanel.html|JPanel]]. Αν και πρόκειται για μία από τις πιο απλές κλάσεις απόγονους της κλάση [[http://docs.oracle.com/javase/7/docs/api/java/awt/Container.html|Container]] στην πραγματικότητα είναι μία εξαιρετικά χρήσιμη κλάση διότι μπορείτε να προσθέτετε Panels μέσα σε Panels ή Frames δημιουργώντας πολύπλοκες συνθέσεις παραθύρων. Για παράδειγμα, πως μπορείτε σε μία θέση ενός από τα layouts που παρουσιάσαμε να προσθέσετε δύο κουμπιά (π.χ. //BorderLayout//). Αυτό μπορείτε να το κάνετε μόνο εάν στη συγκεκριμένη θέση προσθέσετε ένα panel, το οποίο περιέχει τα δύο κουμπιά. | ||
| - | |||
| - | <code java BorderLayoutPanelDemo.java> | ||
| - | import javax.swing.*; | ||
| - | import java.awt.event.ActionListener; | ||
| - | import java.awt.event.ActionEvent; | ||
| - | import java.awt.*; | ||
| - | |||
| - | public class BorderLayoutPanelDemo extends JFrame { | ||
| - | public BorderLayoutPanelDemo () { | ||
| - | super(); | ||
| - | setSize(400, 150); | ||
| - | setTitle("BorderLayout Demo"); | ||
| - | setLayout(new BorderLayout()); | ||
| - | setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); | ||
| - | | ||
| - | ButtonListener listener = new ButtonListener(); | ||
| - | | ||
| - | okCancelPanel(this); | ||
| - | | ||
| - | JButton centerButton = new JButton("Close Window Button"); | ||
| - | centerButton.addActionListener( listener ); | ||
| - | add(centerButton, BorderLayout.CENTER); | ||
| - | } | ||
| - | | ||
| - | private void okCancelPanel(Container container) { | ||
| - | JPanel southPanel = new JPanel(); | ||
| - | southPanel.setLayout(new FlowLayout()); | ||
| - | container.add(southPanel, BorderLayout.SOUTH); | ||
| - | | ||
| - | JButton cancelButton = new JButton("Cancel"); | ||
| - | southPanel.add(cancelButton); | ||
| - | | ||
| - | JButton okButton = new JButton("OK!"); | ||
| - | southPanel.add(okButton); | ||
| - | } | ||
| - | | ||
| - | public class ButtonListener implements ActionListener { | ||
| - | public void actionPerformed(ActionEvent e) { | ||
| - | System.out.println(e); | ||
| - | System.exit(1); | ||
| - | } | ||
| - | } | ||
| - | | ||
| - | public static void main(String[] args) { | ||
| - | BorderLayoutPanelDemo w = new BorderLayoutPanelDemo(); | ||
| - | w.setVisible(true); | ||
| - | } | ||
| - | } | ||
| - | </code> | ||