Java 单击时调用对象并等待dispose

Java 单击时调用对象并等待dispose,java,popup,click,dispose,Java,Popup,Click,Dispose,我正在开发一个虚拟键盘模块 KeyBoardModule.java KeyBoardModule kbm = new KeyBoardModule("small", false, null); 在OtherjForm(MainFrame.java)是文本框上的clickevent时调用 然后我用键盘(类似于弹出窗口)获得新的JFrame, 当按下JButtonenter键时,它将数据保存到KeyBoardModule的textarea变量textFieldValue。 而不是frame.dis

我正在开发一个虚拟键盘模块

KeyBoardModule.java

KeyBoardModule kbm = new KeyBoardModule("small", false, null);
在Other
jForm(MainFrame.java)
是文本框上的clickevent时调用 然后我用键盘(类似于弹出窗口)获得新的
JFrame
, 当按下
JButton
enter键时,它将数据保存到
KeyBoardModule
textarea
变量
textFieldValue
。 而不是frame.disponse()

主类调用大型机,单击键盘调用大型机,我需要将值从键盘返回到大型机


如果不使用大型机中的actionlistener(用于enter按钮)将值直接从GUI 1返回到另一个GUI 2,GUI 1必须具有对GUI 2对象的引用。因此,无论何时您想要将任何消息从GUI 1传递到GUI 2,都可以通过调用适当的GUI 2方法来实现。例如,考虑下面给出的代码。在
MainFrame
中创建
InputBoard
对象时,我们将
MainFrame
的当前对象传递给
InputBoard的
构造函数,以便
InputBoard
可以使用
MainFrame
的适当
公共
方法将其输入传递给
MainFrame
GUI
。在这里,
MainFrame
单击按钮打开
InputBoard
框架。当一些输入被传递到
InputBoard
中的
JTextField
时,它就会反映在
大型机的
JTextArea

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import javax.swing.SwingUtilities;
import java.awt.FlowLayout;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.DocumentEvent;

class MainFrame extends JFrame implements ActionListener
{
    private JButton button;
    private JTextArea tArea;
    private InputBoard inBoard;
    public void prepareAndShowGUI()
    {
        setTitle("Main Frame");
        tArea = new JTextArea(10,30);
        button = new JButton("Click Me");
        inBoard = new InputBoard(this);
        inBoard.prepareGUI();
        JScrollPane tFieldPane = new JScrollPane(tArea);
        tArea.setLineWrap(true);
        tArea.setWrapStyleWord(true);
        tArea.setEditable(false);
        button.addActionListener(this);
        getContentPane().add(tFieldPane);
        getContentPane().add(button,BorderLayout.SOUTH);
        pack();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        button.requestFocus();
    }
    @Override
    public void actionPerformed(ActionEvent evt)
    {
        if (!inBoard.isVisible())
        {
            inBoard.setVisible(true);
        }
        inBoard.toFront();
    }
    public void setText(final String s)
    {
        tArea.setText(s);
    }
    public static void main(String[] st)
    {
        SwingUtilities.invokeLater( new Runnable()
        {
            @Override
            public void run()
            {
                MainFrame mf = new MainFrame();
                mf.prepareAndShowGUI();
            }
        });
    }
}
class InputBoard extends JFrame implements DocumentListener
{
    MainFrame mainFrame ;
    JTextField inField;
    public InputBoard(MainFrame mainFrame)
    {
        this.mainFrame = mainFrame;
    }
    public void prepareGUI()
    {
        setTitle("Input Board");
        inField = new JTextField(40);
        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(inField);
        inField.getDocument().addDocumentListener(this);
        setLocationRelativeTo(mainFrame);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        pack();
    }
    @Override
    public void changedUpdate(DocumentEvent evt)
    {
        mainFrame.setText(inField.getText());
    }
    @Override
    public void insertUpdate(DocumentEvent evt)
    {
        mainFrame.setText(inField.getText());
    }
    @Override
    public void removeUpdate(DocumentEvent evt)
    {
        mainFrame.setText(inField.getText());
    }
}

你能发布你的代码吗?谢谢你的解释,非常有用。:-。。。你帮了很多忙,现在我知道更多:-)