2

问题是:我的 jpanel.(MyJPanel) 在鼠标右键单击时触发。当我按下它时,它会显示带有“预览”项的弹出菜单。鼠标右键点击jpanel

我想在按下“预览”后显示 JFrame,但我不知道如何显示 jpanel 的内容,因为预览(jmenuitem)的动作监听器在 MyJpanel 中。

public MyJPanel(String s,int i){
    addMouseListener(new PopupTrigger());
    JPanel obh = new JPanel();
    number = i;
    picture = new ImageIcon(s);
    preview = new JMenuItem("Preview");
    preview.addActionListener(
            new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    JFrame f = new JFrame("Preview window");
                    f.setSize(csizeX/2,csizeY/2);

                    f.setVisible(true);
                }
            }
    );
    menu.add(preview);
}

如何设置 jframe f 的内容以显示 MyJPanel?(PopupTrigger 扩展了 MouseAdapter 并且它是 MyJPanel 的内部类)

4

3 回答 3

1

首先,您需要将 JPanel final: final Jpanel obh... 标记为可从内部类访问。然后,在侦听器内部

f.getContentPane().add(obh);
于 2012-04-23T20:37:58.113 回答
1

制作 obh final,然后将其添加到 JFrame。

于 2012-04-23T20:39:00.487 回答
1

你试过 jFrame.setContentPane(newcontentPanel) 吗?

于 2012-04-23T20:40:27.043 回答