关闭在另一个JFrame中打开的JFrame



我正在构建一个应用程序,当第一个JFrame被禁用时,我需要在另一个JFrame中打开一个JFrame。

问题是当我想关闭第二个JFrame时,我需要启用第一个JFrame。

我已经尝试了几种方法,但它不能正常工作,我不能在每个方法中达到一个目标。我需要同时达到两个目标:

  1. 打开第二帧时禁用第一帧
  2. 第二帧关闭时启用

下面是我的部分代码:

    private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {                                          
    // TODO add your handling code here:
    PaymentJFrame pjf = new PaymentJFrame();
    //setEnableValue(false);
    //enableFrame();
    this.setEnabled(false);
    pjf.setVisible(true);
    if (!pjf.isActive()){
        this.setEnabled(true);
    }
} 

此代码根本不启用第一帧。我试图以另一种方式使用它,当第二帧关闭时添加enable,但它不起作用:

    //Class in first Frame
    private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {                                          
    // TODO add your handling code here:
    PaymentJFrame pjf = new PaymentJFrame();
    //setEnableValue(false);
    //enableFrame();
    this.setEnabled(false);
    pjf.setVisible(true); 
} 
    //Class in second Frame 
    private void formWindowClosed(java.awt.event.WindowEvent evt) {                                  
    // TODO add your handling code here:
    FinancialDocumentsJFrame.setEnableValue(true);
}                                 

有人知道我怎样才能达到这些目标吗?

第一个框架是主框架,第二个框架是一个类,我用它来制作框架对象,以便从用户那里显示和获取更多信息。

我正在使用netBeans IDE设计器。

首先,一个Swing应用程序应该只有一个JFrame,其他窗口可以是JDialog或其他窗口。关于你的问题,以下面的代码为例。它使用侦听器来检测第二个窗口的关闭事件。下面的代码应该在(第一个)JFrame(看起来你有一个按钮在那里)

private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {                                          
JDialog paymentDialog = new JDialog();
MyFirstFrame.this.setEnabled(false);
paymentDialog.setVisible(true);
paymentDialog.addWindowListener(new WindowAdapter() {
    @Override
    public void windowClosed(WindowEvent e) {
        MyFirstFrame.this.setEnabled(true);
    }
});
}

您可以通过扩展JDialog来创建您自己的对话框,就像您对框架所做的那样,并在此代码中使用自定义对话框。另外,您可以考虑使用模态JDialog,而不是将JFrame设置为启用或禁用,当对话框处于活动状态时,它会阻止对JFrame的操作。

更进一步,还有Swing窗口的setAlwaysOnTop(boolean)

use this.dispose() method JFrame has dispose() method for JFrame Close

我决定使用jDialog,因为网上很多人都推荐它。

我使用了一个jDialog并复制了我在第二个jFrame中使用的所有对象。

它按我想要的方式工作。

我唯一的问题是为什么java没有准备一个不同的方式来满足这个需求。

我在第一个jFrame中使用一个动作监听器来打开第二个Frame,我使用了jDialog。

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    ActivityJDialog ajdf = new ActivityJDialog(this,true);
    ajdf.setVisible(true);
} 

我已经复制了所有我想要的到这个jDialog。

public class ActivityJDialog extends java.awt.Dialog {
//Document Attributes 
int documentStatus = -1;
int documentType = -1;
/**
 * Creates new form AcrivityJDialog
 * @param parent
 * @param modal
 */
public ActivityJDialog(java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    initComponents();
    /*if(false) // Full screen mode
    {
        // Disables decorations for this frame.
        //this.setUndecorated(true);
        // Puts the frame to full screen.
        this.setExtendedState(this.MAXIMIZED_BOTH);
    }
    else // Window mode
    {*/
        // Size of the frame.
        this.setSize(1000, 700);
        // Puts frame to center of the screen.
        this.setLocationRelativeTo(null);
        // So that frame cannot be resizable by the user.
        this.setResizable(false);
    //}
}

谢谢大家的帮助。

相关内容

  • 没有找到相关文章

最新更新