JAVA-如何在action listener中访问父帧组件?

JAVA-如何在action listener中访问父帧组件?,java,jframe,Java,Jframe,这是我的密码 这段代码给了我一个框架,里面显示了文本。 我可能需要根据需要修改文本,然后有两个按钮。一个进一步推送代码,另一个关闭应用程序。 我想做的是在createOverviewButtonsPanel方法中向Okbut添加监听器,它将检索txtMenuOverview的值,以便进一步传递它。这是否可能 MenuOverviewFrame类: import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimens

这是我的密码

这段代码给了我一个框架,里面显示了文本。 我可能需要根据需要修改文本,然后有两个按钮。一个进一步推送代码,另一个关闭应用程序。 我想做的是在createOverviewButtonsPanel方法中向Okbut添加监听器,它将检索txtMenuOverview的值,以便进一步传递它。这是否可能

MenuOverviewFrame类:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;

public class MenuOverviewFrame extends JFrame{
private static final long serialVersionUID = -5908534022988507381L;
private static final Font FONT = new Font("Courier", Font.BOLD, 16);
private static final Font MENU_FONT = new Font(Font.MONOSPACED,Font.BOLD,14);
private static final Color BLUE_STEEL = new Color(70, 107, 176);
private static final Dimension INITIAL_SIZE = new Dimension(500, 300);
private static final Dimension MINIMUM_SIZE = new Dimension(275, 150);

public static void main(String[] args) {
    System.setProperty("sun.java2d.cmm", "sun.java2d.cmm.kcms.KcmsServiceProvider");
    SwingUtilities.invokeLater(() -> {
        MenuOverviewFrame frame = new MenuOverviewFrame("Test test\ntest\ntest");
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    });
}

public MenuOverviewFrame(String menuOutput) {
    super("Daily Menu");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    getContentPane().setBackground(Color.WHITE);
    setSize(INITIAL_SIZE); // The initial frame size
    setMinimumSize(MINIMUM_SIZE);

    JTextArea txtMenuOverview = new JTextArea(menuOutput);
    txtMenuOverview.setFont(MENU_FONT);
    JScrollPane taScroll = new JScrollPane(txtMenuOverview);
    add(taScroll);

    JPanel overviewButtonsPanel = createOverviewButtonsPanel();
    overviewButtonsPanel.setPreferredSize(new Dimension(overviewButtonsPanel.getPreferredSize().width, overviewButtonsPanel.getPreferredSize().height + 30));
    getContentPane().add(overviewButtonsPanel, BorderLayout.SOUTH); // at the center
}

private JPanel createOverviewButtonsPanel() {
    JPanel panel = new JPanel();
    //panel.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 1));
    panel.setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.insets = new Insets(0,0,0,20);
    panel.setBackground(BLUE_STEEL);

    JButton okButt = new JButton("Send menu");
    JButton koButt = new JButton("Abort mission");

    panel.add(okButt,gbc);
    panel.add(koButt);
    okButt.setVerticalAlignment(SwingConstants.CENTER);
    return panel;
}
}

谢谢

由于您的类
MenuOverviewFrame
扩展了JFrame,您已经有了访问权限。使用
参考框架。例如,this.dispose()将处理帧。我应该更具体一些。我想在createOverviewButtonsPanel方法中创建动作侦听器这是一种基本的java知识。在匿名类中,为了引用外部类,可以使用OuterClass.this。在您的例子中,在action listener中,
MenuOverviewFrame.this.dispose()对!谢谢这个现在很好用。我正在使用get方法检索字符串。