我最近用SWT/JFace做一个项目,在项目中需要实现这样一个功能:
有一个主窗体,主窗体上有一个面板,面板内有一组Label如下图([]代表一个label):
[这]  [是]  [一]  [组]  [Labels]  [ ]  [ ]  [ ]  [ ]  [ ]  [ ]  [ ]
当右单击Label的时候,弹出一个子窗体。
请问,如何实现让弹出子窗体的顶端和点击Label的底端对齐?弹出子窗体的左端和Label的左端对齐。

解决方案 »

  1.   

    用getLocationOnScreen这个方法,写了一段代码,测试通过....^_^
    简单一点就是
    newframe.setLocation(label.getLocationOnScreen);
    这样就OK了package untitled1;import java.awt.BorderLayout;
    import java.awt.Dimension;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JLabel;
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseAdapter;/**
     * <p>Title: </p>
     *
     * <p>Description: </p>
     *
     * <p>Copyright: Copyright (c) 2007</p>
     *
     * <p>Company: </p>
     *
     * @author not attributable
     * @version 1.0
     */
    public class Frame1 extends JFrame {
        JPanel contentPane;
        JLabel jLabel1 = new JLabel();
        public Frame1() {
            try {
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }    /**
         * Component initialization.
         *
         * @throws java.lang.Exception
         */
        private void jbInit() throws Exception {
            contentPane = (JPanel) getContentPane();
            contentPane.setLayout(null);
            setSize(new Dimension(400, 300));
            setTitle("Frame Title");
            jLabel1.setBorder(BorderFactory.createEtchedBorder());
            jLabel1.setText("jLabel1");
            jLabel1.setBounds(new Rectangle(92, 56, 98, 19));
            jLabel1.addMouseListener(new Frame1_jLabel1_mouseAdapter(this));
            contentPane.add(jLabel1);
        }    public void jLabel1_mouseReleased(MouseEvent e) {
            Frame1 frm=new Frame1();
            frm.setSize(50,30);
            frm.setLocation(jLabel1.getLocationOnScreen());
            frm.setVisible(true);
        }
    }
    class Frame1_jLabel1_mouseAdapter extends MouseAdapter {
        private Frame1 adaptee;
        Frame1_jLabel1_mouseAdapter(Frame1 adaptee) {
            this.adaptee = adaptee;
        }    public void mouseReleased(MouseEvent e) {
            adaptee.jLabel1_mouseReleased(e);
        }
    }
      

  2.   

    yuyu622() 谢谢你了!
    我是用 SWT/JFace作开发的,但是你用的是Swing.
    你能用SWT写一个吗?
      

  3.   

    真是对不起了,我还没有学swt