java - 在 JFrame 中显示 JPanel 的内容

标签 java swing

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

我想在按“预览”后显示 JFrame,但我不知道如何显示 jpanel 的内容,因为预览(jmenuitem)的 Action 监听器位于 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的内部类)

最佳答案

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

f.getContentPane().add(obh);

关于java - 在 JFrame 中显示 JPanel 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10287825/

相关文章:

java - 使用 Java gcm-server 向主题发送消息

java - 在 if 语句中为方法调用正确的对象?

java - JScrollBar可见

java - 程序启动后调用Canvas.setSize()和JFrame.pack()后JFrame变小

Java GridLayout 图像大小

java - 为什么我的形状和图像在我的面板上消失了?

java - 从 Java 文本文件中删除特定行?

java - 以正向/反向顺序比较时间序列的优雅方式

java - 为什么我无法导入 GoogleSignInClient 类?

java - 在 Java 中处理图像时提高性能