JAVA - 如何在动作侦听器中访问父框架组件?

时间:2018-05-24 09:34:47

标签: java jframe

这是我的代码

此代码为我提供了一个框架,其中显示了文本。 我可能需要根据需要修改文本,然后有两个按钮。一个进一步推送代码,另一个关闭应用程序。 我想要做的是在createOverviewButtonsPanel方法中向okButt添加监听器,它将检索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;
}
}

谢谢

0 个答案:

没有答案