1

我认为把一切都搞砸了。我尝试在MouseEntered事件触发时创建弹出窗口。我怎样才能解决这个问题?

Popup p=factory.getPopup(c,null,x,y);  

我不确定参数

此代码的其余部分:

 public class pop extends JFrame{

  class mypopUpShow  implements ActionListener{
    JComponent c;
  //  final Random random;
 public mypopUpShow(JComponent c){
    this.c=c;
  }
    @Override
    public void actionPerformed(ActionEvent ae) {
        Random random=new Random();
       int x = random.nextInt(200);
       int y = random.nextInt(200);
      PopupFactory factory=PopupFactory.getSharedInstance();
      Popup p=factory.getPopup(c,null,x,y);
      p.show();
    }
   }
   public pop() {
    JPanel Panel=new JPanel();

  final Timer   t=new Timer(100, new mypopUpShow(Panel));
    MouseListener listener=new MouseAdapter() {

        @Override
        public void mouseEntered(MouseEvent me){
        t.start();
         }
 };
   setSize(300,300);
   Panel.addMouseListener(listener);

   add(Panel);
   }
   public static void main(String...arg){
   new pop().setVisible(true);
         }
   }
4

1 回答 1

1

问题是您将 getPopup(Component owner, Component contents, int x,int y) 的 'contents' 参数设置为 null。这就是您收到 IllegalArgumentException 的原因。尝试将 null 更改为“new JButton("TEST")”之类的东西,您会看到大量按钮弹出。内容是您想要弹出的内容(小部件、面板、窗口等)。

于 2013-07-15T18:52:48.310 回答