java - 单击时调用对象并等待处理

标签 java popup click dispose

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

KeyBoardModule.java

KeyBoardModule kbm = new KeyBoardModule("small", false, null);

在其他jForm(MainFrame.java)中是文本框上的clickevent时调用 然后我用键盘得到新的 JFrame (它就像弹出窗口), 当按下 JButton Enter 时,它会将数据从 KeyBoardModuletextarea 保存到变量 textFieldValue 中。 比frame.disponse()

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

在主机中不使用 Action 监听器(用于输入按钮)

最佳答案

要将值直接从 GUI1 返回到另一个 GUI2 ,GUI1 必须具有对 GUI2 对象的引用。因此,每当您想要将任何消息从 GUI1 传递到 GUI2 时,您都可以通过调用 GUI2 的适当方法来完成。例如,考虑下面给出的代码。创建InputBoard对象时在MainFrame我们传递MainFrame的当前对象至InputBoard's构造函数使得 InputBoard可以将其输入传递给 MainFrame GUI使用适当的public方法MainFrame 。这里MainFrame打开InputBoard单击按钮时的框架。每当某些输入传递到 JTextFieldInputBoard它反射(reflect)在 JTextArea 中的MainFrame .

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());
    }
}

关于java - 单击时调用对象并等待处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15029409/

相关文章:

java - SWT列表拖放: Get element at drop location

c# - 使用 C# 作为 Windows 服务的 java 应用程序

javascript - 如何在 body 上制作 Div

wpf - 鼠标单击并拖动事件 WPF

javascript - 将标题导航弹出菜单的悬停更改为单击

java - 如何在 spring mvc 中为 LocalDate 注册全局数据绑定(bind)?

java - Printer Writer 让我输入两次以循环一次

php - 页面加载时弹出窗口

iphone - 如何在 iPhone/iPad/iOS 上显示临时弹出消息

Jquery 滚动到带有上一个和下一个按钮的类,多个元素