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> | ||