Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Location.class - Location.java

Location.java

Caricato da: Nophiq
Scarica il programma completo

  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4.  
  5.     /**
  6.      *  Location è una classe che dà la possibilità di posizionare un
  7.      *  JFrame relativamente ad un altro oggetto: allo schermo, ad un altro JFrame,
  8.      *  oppure relativamente al mouse.
  9.      *
  10.      *  Esempio di sorgente che utilizza questa classe
  11.      *  -------------------------
  12.      *  import java.awt.*;
  13.      *  import java.awt.event.*;
  14.      *  import javax.swing.*;
  15.      *
  16.      *  public class Main extends JFrame implements MouseListener {
  17.      *      private JFrame jf;
  18.      *
  19.      *      public Main() {
  20.      *          this.setSize(300, 300);
  21.      *          this.setLocation(10, 10);
  22.      *          this.addMouseListener(this);
  23.      *
  24.      *          jf = new JFrame("OK");
  25.      *          jf.setSize(130, 130);
  26.      *
  27.      *          this.setVisible(true);
  28.      *      }
  29.      *
  30.      *      public void mousePressed(MouseEvent e) {}
  31.      *      public void mouseReleased(MouseEvent e) {}
  32.      *      public void mouseClicked(MouseEvent e) {
  33.      *          Location.setLocation_RelativeMouse(jf, e, Location.LOCATION_RIGHT_DOWN, 0, 0);
  34.      *          jf.setVisible(true);
  35.      *      }
  36.      *      public void mouseEntered(MouseEvent e) {}
  37.      *      public void mouseExited(MouseEvent e) {}
  38.      *
  39.      *      public static void main (String args[]) {
  40.      *          Main m = new Main();
  41.      *      }
  42.      *  }
  43.      *  -------------------------
  44.      *
  45.      *  @date 08.08.2006
  46.      *  @author Nophiq
  47.      */
  48. public class Location {
  49.     public static final short LOCATION_RIGHT_DOWN = 20;
  50.     public static final short LOCATION_LEFT_DOWN = 21;
  51.     public static final short LOCATION_RIGHT_UP = 22;
  52.     public static final short LOCATION_LEFT_UP = 23;
  53.     public static final short LOCATION_CENTER = 24;
  54.    
  55.         /**
  56.          * Posiziona il JFrame relativamente al JFrame di riferimento ed in base al positionPolicy
  57.          * passatogli come parametro
  58.          *
  59.          * @param
  60.          *  jfBase JFrame da posizionare relativamente a jfRelative
  61.          *  jfRelative JFrame di riferimento
  62.          *  positionPolicy può assumere i seguenti valori:
  63.          *  <ul>
  64.          *      <li> LOCATION_RIGHT_DOWN - per posizionare l'angolo in basso
  65.          *          a destra del jfBase con quello di jfRelative</li>
  66.          *      <li> LOCATION_LEFT_DOWN - per posizionare l'angolo in basso
  67.          *          a sinistra del jfBase con quello di jfRelative</li>
  68.          *      <li> LOCATION_RIGHT_UP - per posizionare l'angolo in alto
  69.          *          a destra del jfBase con quello di jfRelative</li>
  70.          *      <li> LOCATION_LEFT_UP - per posizionare l'angolo in alto
  71.          *          a sinistra del jfBase con quello di jfRelative</li>
  72.          *      <li> LOCATION_CENTER - per posizionare jfBase al centro di
  73.          *          jfRelative. Nota: i margin sono automaticamente settati
  74.          *          a 0 se usate questo policy</li>
  75.          *  </ul>
  76.          *  marginX è la lunghezza che distanzia i due angoli
  77.          *  marginY è l'altezza che distanzia i due angoli
  78.          */
  79.     public static void setLocation_RelativeJFrame(JFrame jfBase, JFrame jfRelative, short positionPolicy, int marginX, int marginY) {
  80.         switch (positionPolicy) {
  81.             case LOCATION_RIGHT_DOWN: {jfBase.setLocation(jfRelative.getX()+marginX, jfRelative.getY()+marginY); break;}
  82.             case LOCATION_LEFT_DOWN: {jfBase.setLocation(jfRelative.getX()+jfRelative.getWidth()-jfBase.getWidth()+marginX, jfRelative.getY()+marginY); break;}
  83.             case LOCATION_RIGHT_UP: {jfBase.setLocation(jfRelative.getX()+marginX, jfRelative.getY()+jfRelative.getHeight()-jfBase.getHeight()+marginY); break;}
  84.             case LOCATION_LEFT_UP: {jfBase.setLocation(jfRelative.getX()+jfRelative.getWidth()-jfBase.getWidth()+marginX, jfRelative.getY()+jfRelative.getHeight()-jfBase.getHeight()+marginY); break;}
  85.             case LOCATION_CENTER: {jfBase.setLocation(jfRelative.getX()+jfRelative.getWidth()/2-jfBase.getWidth()/2, jfRelative.getY()+jfRelative.getHeight()/2-jfBase.getHeight()/2); break;}
  86.             default: throw new IllegalArgumentException("Invalido positionPolicy");
  87.         }
  88.     }
  89.    
  90.         /**
  91.          * Posiziona il JFrame relativamente allo schermo in base al positionPolicy
  92.          * passatogli come parametro
  93.          *
  94.          * @param
  95.          *  jfBase JFrame da posizionare relativamente allo schermo ed
  96.          *  al valore di positionPolicy.
  97.          *  positionPolicy può assumere i seguenti valori:
  98.          *  <ul>
  99.          *      <li> LOCATION_RIGHT_DOWN - per posizionare l'angolo in basso
  100.          *          a destra del JFrame con quello dello schermo</li>
  101.          *      <li> LOCATION_LEFT_DOWN - per posizionare l'angolo in basso
  102.          *          a sinistra del JFrame con quello dello schermo</li>
  103.          *      <li> LOCATION_RIGHT_UP - per posizionare l'angolo in alto
  104.          *          a destra del JFrame con quello dello schermo</li>
  105.          *      <li> LOCATION_LEFT_UP - per posizionare l'angolo in alto
  106.          *          a sinistra del JFrame con quello dello schermo</li>
  107.          *      <li> LOCATION_CENTER - per posizionare il JFrame al centro
  108.          *          dello schermo</li>
  109.          *  </ul>
  110.          *  marginX è la lunghezza che distanzia i due angoli
  111.          *  marginY è l'altezza che distanzia i due angoli
  112.          */
  113.     public static void setLocation_RelativeScreen(JFrame jfBase, short positionPolicy, int marginX, int marginY) {
  114.         switch (positionPolicy) {
  115.             case LOCATION_RIGHT_DOWN: {jfBase.setLocation(0+marginX, 0+marginY); break;}
  116.             case LOCATION_LEFT_DOWN: {jfBase.setLocation(Toolkit.getDefaultToolkit().getScreenSize().width-jfBase.getWidth()+marginX, 0+marginY); break;}
  117.             case LOCATION_RIGHT_UP: {jfBase.setLocation(0+marginX, Toolkit.getDefaultToolkit().getScreenSize().height-jfBase.getHeight()+marginY); break;}
  118.             case LOCATION_LEFT_UP: {jfBase.setLocation(Toolkit.getDefaultToolkit().getScreenSize().width-jfBase.getWidth()+marginX, Toolkit.getDefaultToolkit().getScreenSize().height-jfBase.getHeight()+marginY); break;}
  119.             case LOCATION_CENTER: {jfBase.setLocation(Toolkit.getDefaultToolkit().getScreenSize().width/2-jfBase.getWidth()/2, Toolkit.getDefaultToolkit().getScreenSize().height/2-jfBase.getHeight()/2); break;}
  120.             default: throw new IllegalArgumentException("Invalido positionPolicy");
  121.         }
  122.     }
  123.    
  124.         /**
  125.          * Posiziona il JFrame relativamente al mouse in base al positionPolicy
  126.          * passatogli come parametro
  127.          *
  128.          * @param
  129.          *  jfBase JFrame da posizionare relativamente alle coordinate del mouse ed
  130.          *  al valore di positionPolicy.
  131.          *  e l'evento del mouse (mouseClicked, mousPressed, ecc...)
  132.          *  positionPolicy può assumere i seguenti valori:
  133.          *  <ul>
  134.          *      <li> LOCATION_RIGHT_DOWN - per posizionare l'angolo in alto
  135.          *          a sinistra del JFrame con le coordinate del mouse</li>
  136.          *      <li> LOCATION_LEFT_DOWN - per posizionare l'angolo in alto
  137.          *          a destra del JFrame con le coordinate del mouse</li>
  138.          *      <li> LOCATION_RIGHT_UP - per posizionare l'angolo in basso
  139.          *          a sinistra del JFrame con le coordinate del mouse</li>
  140.          *      <li> LOCATION_LEFT_UP - per posizionare l'angolo in basso
  141.          *          a destra del JFrame con le coordinate del mouse</li>
  142.          *      <li> LOCATION_CENTER - per posizionare il JFrame al centro
  143.          *          del mouse</li>
  144.          *  </ul>
  145.          *  marginX è la lunghezza che distanzia il mouse dal JFrame
  146.          *  marginY è l'altezza che distanzia il mouse dal JFrame
  147.          */
  148.     public static void setLocation_RelativeMouse(JFrame jfBase, MouseEvent e, short positionPolicy, int marginX, int marginY) {
  149.         switch (positionPolicy) {
  150.             case LOCATION_RIGHT_DOWN: {jfBase.setLocation(e.getX()+marginX, e.getY()+marginY); break;}
  151.             case LOCATION_LEFT_DOWN: {jfBase.setLocation(e.getX()-jfBase.getWidth()+marginX, e.getY()+marginY); break;}
  152.             case LOCATION_RIGHT_UP: {jfBase.setLocation(e.getX()+marginX, e.getY()-jfBase.getHeight()+marginY); break;}
  153.             case LOCATION_LEFT_UP: {jfBase.setLocation(e.getX()-jfBase.getWidth()+marginX, e.getY()-jfBase.getHeight()+marginY); break;}
  154.             case LOCATION_CENTER: {jfBase.setLocation(e.getX()-(jfBase.getWidth()/2), e.getY()-(jfBase.getHeight()/2)); break;}
  155.             default: throw new IllegalArgumentException("Invalido positionPolicy");
  156.         }
  157.     }
  158. }