所以我有一个简单的Java GUI,其中有两个可编辑的文本字段。
如果我输入第一个字段,它将弹出一个对话框,显示第一个字段。
##########################################
# Message x #
##########################################
# Your textfields #
# 1: this is an editable field #
# #
##########################################
如果我输入,它将弹出一个对话框,显示第二个字段。
##########################################
# Message x #
##########################################
# Your textfields #
# 2: this is an editable field 2 #
# #
##########################################
但是,是否可能会弹出一个同时显示两个字段的对话框?
##########################################
# Message x #
##########################################
# Your textfields #
# 1: this is an editable field #
# 2: this is an editable field 2 #
##########################################
这是我到目前为止所做的:
我的textFrames:
class EditTextFrame extends JFrame
{
private JTextField editableField1;
private JTextField editableField2;
public EditTextFrame()
{
setLayout(new FlowLayout());
editableField1 = new JTextField("This is an editable field", 25);
editableField2 = new JTextField("This is an editable field2", 25);
add(editableField1);
add(editableField2);
TextFieldHandler handler = new TextFieldHandler();
editableField1.addActionListener(handler);
editableField2.addActionListener(handler);
}
我的动作事件:
private class TextFieldHandler implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
String string1 = "";
String string2 = "";
if (e.getSource() == editableField1)
string1 = String.format("1: %s",
e.getActionCommand());
if (e.getSource() == editableField2)
string2 = String.format("2: %s",
e.getActionCommand());
JOptionPane.showMessageDialog(null, "Your textfields \n" + string1 + string2
);
}
}
我知道我的字符串concat没用,因为其中一个条件满足后if语句停止,其中一个将为空..但是我似乎找不到解决方法。
答案 0 :(得分:1)
如果每次都将填充两个文本字段(预期输入是两个字段,预期输出都是两个),则可以创建两个单独的事件处理程序,并将一个附加到每个文本字段。让第一个文本字段的字符串保存在全局变量中,然后第二个字符串将两个字符串连接在一起,然后弹出您的文本框。
但是,要处理所有类型的输入(仅一个或两个字段),我将添加第三个“提交”按钮。使用此提交按钮从两个文本字段中提取字符串,然后弹出对话框。将字符串初始化为空(“”),以确保没有空指针。
private String field1String = "";
private String field2String = "";
// you'll need one of these for each text field
private class TextField1Handler implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
field1String = yourField1.getText();
}
}
// attach this to your button
private class ButtonClickHandler implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
JOptionPane.showMessageDialog(null, "Your textfields \n" +
field1String + field2String);
}
}