gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:49:30 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com