Java 单击时调用对象并等待dispose
我正在开发一个虚拟键盘模块 KeyBoardModule.javaJava 单击时调用对象并等待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 kbm = new KeyBoardModule("small", false, null);
在OtherjForm(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());
}
}
你能发布你的代码吗?谢谢你的解释,非常有用。:-。。。你帮了很多忙,现在我知道更多:-)