【问题标题】:show content of JPanel in JFrame在 JFrame 中显示 JPanel 的内容
【发布时间】:2012-04-23 20:33:11
【问题描述】:

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

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

【问题讨论】:

  • picture = new ImageIcon(s); 假定 s 是文件路径。该图像是嵌入式应用程序资源,还是由用户提供?为了尽快获得更好的帮助,请发帖SSCCE
  • 我从File f = fileChooser.getSelectedFile()f.getAbsolutePath得到s

标签: java swing


【解决方案1】:

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

f.getContentPane().add(obh);

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

    你试过 jFrame.setContentPane(newcontentPanel) 吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 2011-07-18
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      相关资源
      最近更新 更多