swing:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
swing:start [2015/05/02 13:27]
gthanos [FlowLayout Manager]
swing:start [2016/02/26 11:15] (current)
Line 143: Line 143:
 ===== Grid Layout Manager ===== ===== Grid Layout Manager =====
  
 +Ο //Grid Layout Manager// τοποθετεί τα στοιχεία με την σειρά σε ένα πλέγμα (grid) από γραμμές και στήλες. Με την χρήση του //Grid Layout Manager// όλες οι θέσεις του πλέγματος έχουν το ίδιο μέγεθος. Για παράδειγμα,​ η παρακάτω δήλωση δημιουργεί ένα πλέγμα 2 γραμμών και 3 στηλών,​ όπως φαίνεται στο παρακάτω σχήμα.
 +<code java>
 +  setLayout(new GridLayout(2,​3));​
 +</​code>​
 +
 +Από το παρακάτω σχήμα θα πρέπει να έχετε υπόψη σας ότι οι γραμμές το πλέγματος δεν είναι ορατές και ότι τα στοιχεία που περιέχονται σε αυτές "​τεντώνονται"​ με τρόπο ώστε να καταλαμβάνουν ολόκληρη μία θέση του πλέγματος. Επίσης δεν επιλέγεται ποιο στοιχείο θα μπει σε ποια θέση, αλλά τα στοιχεία τοποθετούνται με την σειρά που τα προσθέτετε στις θέσεις του πλέγματος. Αν θέλετε να αφήσετε μία κενή θέση μπορείτε να προσθέσετε ένα κενό label (JLabel) στην θέση αυτή. ​
 +
 +Αν και μπορείτε να προσδιορίσετε τον αριθμό γραμμών και στηλών του πλέγματος,​ στην πραγματικότητα ο παραπάνω προσδιορισμός δεν είναι ακριβής. Ο αριθμός των στηλών γεμίζει ως εξής. Εάν στο παραπάνω πλέγμα προσθέσετε 6 στοιχεία τότε οι στήλες είναι 3. Αν όμως προσθέσετε 7 ή 8 οι στήλες θα γίνουν 4 ανεξάρτητα από τον αριθμό 3 που έχετε εισάγει. Αν προσθέσετε 4 στοιχεία οι στήλες θα γίνουν 2. Κατά συνέπεια,​ η παραπάνω δήλωση είναι ισοδύναμη με
 +<code java>
 +  setLayout(new GridLayout(2,​0));​
 +  ή
 +  setLayout(new GridLayout(2,​Ν));​
 +</​code>​
 +Αν θέλετε να __κλειδώσετε τον αριθμό των στηλών__ και να παίξετε με τον αριθμό των γραμμών μπορείτε να μηδενίσετε τον αριθμό των γραμμών και να προσδιορίσετε τον αριθμό των στηλών που επιθυμείτε. Σε αυτή την περίπτωση ο αριθμός των στηλών παραμένει σταθερός και ο αριθμός των γραμμών αυξάνει,​ όπως στο παρακάτω παράδειγμα.
 +<code java>
 +  setLayout(new GridLayout(0,​3)); ​   ​
 +</​code>​
 +
 +Παρακάτω δίνεται ένα παράδειγμα χρήσης του //Grid Layout Manager//:
 +<code java GridLayoutDemo.java>​
 +import javax.swing.*;​
 +import java.awt.event.ActionListener;​
 +import java.awt.event.ActionEvent;​
 +import java.awt.*;
 +
 +public class GridLayoutDemo extends JFrame {
 +  public GridLayoutDemo () {
 +    super();
 +    setSize(400,​ 150);
 +    setTitle("​GridLayout Demo"​);​
 +    setLayout(new GridLayout(3,​2));​
 +    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);​
 +    ​
 +    ButtonListener listener = new ButtonListener();​
 +    JButton close1 = new JButton("​Close 1");
 +    close1.addActionListener( listener );
 +    add(close1);​
 +    ​
 +    JButton close2 = new JButton("​Close 2");
 +    close2.addActionListener( listener );
 +    add(close2);​
 +    ​
 +    JButton close3 = new JButton("​Close 3");
 +    close3.addActionListener( listener );
 +    add(close3);​
 +    ​
 +    JButton close4 = new JButton("​Close 4");
 +    close4.addActionListener( listener );
 +    add(close4);​
 +    ​
 +    JButton close5 = new JButton("​Close 5");
 +    close5.addActionListener( listener );
 +    add(close5);​
 +    ​
 +    JButton close6 = new JButton("​Close 6");
 +    close6.addActionListener( listener );
 +    add(close6);​
 +    ​
 +    JButton close7 = new JButton("​Close 7");
 +    close7.addActionListener( listener );
 +    add(close7);​
 +  }
 +  ​
 +  public class ButtonListener implements ActionListener {
 +    public void actionPerformed(ActionEvent e) {
 +      System.out.println(e);​
 +      System.exit(1);​
 +    }
 +  }
 +  ​
 +  public static void main(String[] args) {
 +    GridLayoutDemo w = new GridLayoutDemo();​
 +    w.setVisible(true);​
 +  }
 +}
 +</​code>​
 +
 +{{  :​swing:​gridlayoutdemo.png ​ |}}
 ===== Box Layout Manager ===== ===== Box Layout Manager =====
  
 +Ο //Box Layout Manager// καταχωρεί όλα τα στοιχεία κατακόρυφα ή κάθετα ανάλογα με την παράμετρο που περνάμε στον κατασκευαστή της κλάσης //​BoxLayout//​. Οι παράμετροι που μπορείτε να περάσετε είναι οι παρακάτω:​
 +  * X_AXIS
 +  * Υ_AXIS
 +  * LINE_AXIS (ανάλογο του X_AXIS)
 +  * PAGE_AXIS (ανάλογο του Y_AXIS)
 +
 +Δείτε το παρακάτω παράδειγμα και παίξτε με τον κατασκευαστή της κλάσης //​BoxLayout//​.
 +
 +<code java BoxLayoutDemo.java>​
 +import javax.swing.*;​
 +import java.awt.event.ActionListener;​
 +import java.awt.event.ActionEvent;​
 +import java.awt.*;
 +
 +public class BoxLayoutDemo extends JFrame {
 +  public BoxLayoutDemo () {
 +    super();
 +    setSize(150,​ 250);
 +    setTitle("​Box Layout Demo"​);​
 +    setLayout(new BoxLayout(this.getContentPane(),​BoxLayout.Y_AXIS));​
 +    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);​
 +    ​
 +    ButtonListener listener = new ButtonListener();​
 +    JButton close1 = new JButton("​Close 1");
 +    close1.addActionListener( listener );
 +    add(close1);​
 +    ​
 +    JButton close2 = new JButton("​Close 2");
 +    close2.addActionListener( listener );
 +    add(close2);​
 +    ​
 +    JButton close3 = new JButton("​Close 3");
 +    close3.addActionListener( listener );
 +    add(close3);​
 +    ​
 +    JButton close4 = new JButton("​Close 4");
 +    close4.addActionListener( listener );
 +    add(close4);​
 +    ​
 +    JButton close5 = new JButton("​Close 5");
 +    close5.addActionListener( listener );
 +    add(close5);​
 +    ​
 +    JButton close6 = new JButton("​Close 6");
 +    close6.addActionListener( listener );
 +    add(close6);​
 +    ​
 +    JButton close7 = new JButton("​Close 7");
 +    close7.addActionListener( listener );
 +    add(close7);​
 +  }
 +  ​
 +  public class ButtonListener implements ActionListener {
 +    public void actionPerformed(ActionEvent e) {
 +      System.out.println(e);​
 +      System.exit(1);​
 +    }
 +  }
 +  ​
 +  public static void main(String[] args) {
 +    BoxLayoutDemo w = new BoxLayoutDemo();​
 +    w.setVisible(true);​
 +  }
 +}
 +</​code>​
 +
 +{{ :​swing:​boxlayoutdemo.png |}}
 ===== Group Layout Manager ===== ===== Group Layout Manager =====
  
swing/start.1430573230.txt.gz · Last modified: 2016/02/26 11:15 (external edit)