java - 单击按钮时关闭特定的 JInternalFrame

标签 java swing jinternalframe jdesktoppane

我正在 JDesktopPane 中创建多个 JInternalFrame。每个框架有一个按钮。我想关闭单击按钮的特定框架。

internalFrame = new JInternalFrame("Internal Frame", true, true, true, true);

    internalFrame.setSize(300, 300);
    internalFrame.setLocation(xPosition * openFrameCount, yPosition
            * openFrameCount);

    internalFrame.setContentPane(createContentPane());
    internalFrame.setJMenuBar(createPopJMenuBar());

    internalFrame.setVisible(true);

    JButton close = new JButton( "Close Me!" );  
    close.addActionListener( new ActionListener() {  
        public void actionPerformed( ActionEvent e ) {
                try {
                    internalFrame.setClosed( true );
                } catch (PropertyVetoException e1) {
                    e1.printStackTrace();
                }
        }  
    } );  
    internalFrame.add( close );  
    jdpDesktop.add(internalFrame);

通过使用上面的代码,我可以关闭最后创建的框架。其他框架未关闭。

最佳答案

看起来您有 internalFrame 作为封闭类的字段。然后每次创建新的时它都会被覆盖。使用局部变量代替:

// Notice "final"
final JInternalFrame internalFrame = new JInternalFrame("Internal Frame", true, true, true, true);
...

这确保每个操作监听器中的 internalFrame 引用上面几行创建的帧,而不是最后创建的帧。

关于java - 单击按钮时关闭特定的 JInternalFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18288884/

相关文章:

带参数的 JavaFX JavaScript 上行调用

java - 从 .txt 文件读取到 JFrame

Java,文件上传后更新Jlist

java - 在 jDesktopPane 的中心打开 jInternalFrame

java - HTTP Get 请求 - 不兼容的类型

java - Artifactory 启动时抛出异常 : "No content to map due to end-of-input"

java - 如何使用 Mockito 验证是否记录了错误消息?

java - GridBagLayout 中的对齐问题

java - 如何从内部框架访问 JFrame 中的组件

java - JDesktopPane 在 Linux 上的窗口底部有一个工具栏