Section 19.8. Absolute Positioning


19.8. Absolute Positioning

It's possible to set the layout manager to null: no layout control. You might do this to position an object on the display at some absolute coordinates. This is usually not the right approach. Components might have different minimum sizes on different platforms, and your interface would not be very portable.

The following example doesn't use a layout manager and works with absolute coordinates instead:

     //file: MoveButton.java     import java.awt.*;     import java.awt.event.*;     import javax.swing.*;     public class MoveButton extends JPanel {       JButton button = new JButton("I Move");       public MoveButton(  ) {         setLayout(null);         add(button);         button.setSize(button.getPreferredSize(  ));         button.setLocation(20, 20);         addMouseListener(new MouseAdapter(  ) {           public void mousePressed(MouseEvent e) {           button.setLocation(e.getX(  ), e.getY(  ));           }         });       }       public static void main(String[] args) {         JFrame frame = new JFrame("MoveButton");         frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );         frame.setSize(250, 200);         frame.setLocation(200, 200);         frame.setContentPane(new MoveButton(  ));         frame.setVisible(true);       }     } 

Click in the window area, outside of the button, to move the button to a new location. Try resizing the window and note that the button stays at a fixed position relative to the window's upper-left corner.



    Learning Java
    Learning Java
    ISBN: 0596008732
    EAN: 2147483647
    Year: 2005
    Pages: 262

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net