Java 不同类中的两个框架,如何使用actionListener

Java 不同类中的两个框架,如何使用actionListener,java,swing,jframe,actionlistener,multiple-instances,Java,Swing,Jframe,Actionlistener,Multiple Instances,我可能有一个非常简单的问题。我想创建两个框架——mainfr(在名为Pag的类中)和dscrpt(在名为Apras的类中)。我从帧mainfr使用按钮skaiciav创建了第一帧(mainfr)和第二帧(dscrpt)。当问题是如何使用帧dscrp中的按钮griz返回到第一帧时 package grap; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Pag implements

我可能有一个非常简单的问题。我想创建两个框架——mainfr(在名为Pag的类中)和dscrpt(在名为Apras的类中)。我从帧mainfr使用按钮skaiciav创建了第一帧(mainfr)和第二帧(dscrpt)。当问题是如何使用帧dscrp中的按钮griz返回到第一帧时

package grap;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Pag implements ActionListener {
JFrame mainfr;
JFrame apras;
JLabel psl_apras;
JLabel galim_veiksm;
JLabel paspaud;

public Pag() {
    //Create JFrame container
    mainfr = new JFrame("Turinys");

    //Choosing layout type
    mainfr.setLayout(new FlowLayout());

    //window resolution
    mainfr.setSize(500, 300);

    //Program terminates on close
    mainfr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      

    //Label's
    psl_apras = new JLabel("Mokomoji programa"); 
    galim_veiksm = new JLabel("Galimi veiksmai");

    //adding them to main frame
    mainfr.add(psl_apras);
    mainfr.add(galim_veiksm);

    //Button
    JButton skaiciav = new JButton("Description");

    //action listener
    skaiciav.addActionListener(this);

    //adding button to frame
    mainfr.add(skaiciav);
    //another label
    paspaud = new JLabel("Press button");       

    //adding label to frame
    mainfr.add(paspaud);

    //making frame visible
    mainfr.setVisible(true);
}

//action listener method
public void actionPerformed(ActionEvent a) {
    if(a.getActionCommand().equals("Description"))
    {           
        Apras.suk();
        mainfr.setVisible(false);
    }

    //Started to get confused here
    /*if(a.getActionCommand().equals("back")){

        mainfr.setVisible(true);
        apras.setVisible(false);
        dscrp.dispose();            
    */
}


public static void main (String args[]) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new Pag();
        }
    });
}

}   
二等舱

    package grap;

    import javax.swing.*;    
    import java.awt.*;
    import java.awt.event.*;    

    public class Apras {
       static JFrame dscrp;

       static void suk() {
       dscrp = new JFrame("Description");

       dscrp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      
       //frame2.setLocationByPlatform(true);

       dscrp.setBackground(Color.WHITE);
       JButton griz = new JButton("back");
       //griz.addActionListener();
       dscrp.add(griz);

       dscrp.setSize(500, 300);
       dscrp.setVisible(true);       
    }
}

这里的设计有点奇怪,但是您可以将
ActionListener
传递到
suck()
方法中,然后将
griz
按钮侦听器设置为参数。i、 e.
suk(ActionListener)
{…griz.setActionListener(listener);}`然后调用
Apras.suk(this)使第二帧成为模式对话框。这样,当您打开它时,代码执行将在该点阻塞,直到关闭为止。您可以使用gettersee从对话框中获取值