当前位置: 首页 > 知识库问答 >
问题:

检测JPanel卸载/关闭事件

能旭
2023-03-14

全部

我有一个JPanel(比如JTabbedPane容器),它包含一个设计面板和一个预览面板。

预览面板包含一个JME3画布。

我试图实现的是,每当用户移动到应用程序中的另一个面板时,我就可以捕获容器Jpanel的卸载并关闭JME3应用程序,

我找到了以下线程,

谢谢米希尔

共有1个答案

姜鸿
2023-03-14

在面板上实现EstancorListener,您希望了解Loade/Unloading事件。我添加了一个显示和隐藏创建的JPanel的按钮。下面是相同的代码。祖先侦听器告诉我它什么时候被完美地加载和卸载。

public class PanelTrial extends javax.swing.JPanel implements AncestorListener {

     private Container frame;
     private javax.swing.JPanel btnPanel;

     public PanelTrial(Container frame) {
           this.frame = frame;
           initComponents();
           createBtnPanel();
           btnPanel.addAncestorListener(this);
     }

      // Called on btn click event - to show/hide btnPanel
      private void updateRightPanel(boolean showBtnPanel) {
           jPanel1.removeAll();

           GroupLayout layout = (GroupLayout) jPanel1.getLayout();

           if (showBtnPanel) {
               layout.setHorizontalGroup(layout.createSequentialGroup()
                .addComponent(btnPanel));
               layout.setVerticalGroup(layout.createParallelGroup(
                Alignment.TRAILING).addComponent(btnPanel));

                } else {
                layout.setHorizontalGroup(layout.createSequentialGroup()
                .addComponent(rightPanel));
                layout.setVerticalGroup(layout.createParallelGroup(
                Alignment.TRAILING).addComponent(rightPanel));

            }

            jPanel1.validate();
            this.validate();
       }


     @Override
     public void ancestorAdded(AncestorEvent e) {
           if (e.getSource() == btnPanel) 
                System.out.println("BTNSPANEL LOADED / ADDED");
     }

     @Override
     public void ancestorMoved(AncestorEvent e) {
                 // This is of no use for your purpose 
           System.out.println("Anc Moved - " + e.getSource());
      }

      @Override
      public void ancestorRemoved(AncestorEvent e) {
           if (e.getSource() == btnPanel) 
             System.out.println("BTNSPANEL UNLOADED / REMOVED");
      }
 类似资料:
  • 我想捕获浏览器窗口/选项卡关闭事件。我尝试了以下方法,但不起作用: 尝试了这些链接,但没有更多的成功。 JavaScript检查浏览器窗口何时关闭 如何捕获浏览器窗口关闭事件? javascript检测浏览器关闭标签/关闭浏览器 尝试检测浏览器关闭事件 问题: 我只想检测浏览器关闭事件,并在不向用户显示提示的情况下对此进行一些处理。 我尝试过很多方法,通过jQuery或JavaScript检测浏览

  • 问题内容: 我尝试了许多方法来通过jQuery或JavaScript检测浏览器关闭事件。但是,不幸的是,我无法检测到关闭。该和方法也没有工作。 如何检测的窗口,或事件? 问题答案: 您是否尝试过此代码? 第二个功能是可选的,以避免在单击和元素时提示。

  • 我尝试了许多方法通过jQuery或JavaScript检测浏览器关闭事件。但是,不幸的是,我一直未能检测到接近。和方法也不起作用。 如何在卸载前检测窗口、或

  • 我有一个带有登录名(JPanel)的JFrame,可以从菜单栏中选择。菜单栏还根据用户角色显示选项。当用户第一次登录创建的JFrame实例时,当我在菜单栏上选择login并在new JFrame上实例化时,我的问题就出现了,因为我显然打开了两个JFrame,我找不到从JPanel隐藏或关闭之前JFrame的方法。在实例化新JFrame或任何其他可能的解决方案之前,有没有办法隐藏/处理所有打开的窗口

  • 问题内容: 关闭页面时,我使用此代码注销用户,但是单击其他链接(相同的网站)时,用户也会注销: 有什么方法可以区分链接导航和实际页面关闭吗? 编辑: 我目前已实现此解决方案,但是它缺乏检测页面重新加载的能力 问题答案: 尝试以下解决方案,希望对您有所帮助 要么

  • 我正在开发一个包含敏感数据(加密密钥)的应用程序,这些数据不应该泄露。该应用程序应该能够在任何时候脱机工作,所以我不能在云中存储密钥。 当用户有一个扎根的设备时,他可以提取apk并获得密钥。我想阻止这一切。 一旦检测到根用户访问权限,有没有办法在没有用户确认的情况下立即强制卸载我的应用程序? (或者是否有其他方法防止钥匙泄漏??) 我看了一下Samsung Knox,它对数据进行加密,并使用一个硬