gpt4 book ai didi

java - 将 Action 监听器添加到带有 JTextFields 的 JOptionsPane

转载 作者:行者123 更新时间:2023-11-29 04:55:06 25 4
gpt4 key购买 nike

我正在尝试为正在进行的工作项目创建另一个 GUI 屏幕。如果触发此 GUI 屏幕,将打开一个 JOptionsPane,其中包含三个 JTextField 和一个确认按钮(这是实际 JOptionsPane 的一部分)。

我无法让 JTextField 上的 Action 监听器正常工作。当用户单击确认时,我希望文本字段获取其中输入的任何值。然后通过各种条件程序将继续。我已经创建了一个测试类来计划和创建这个与我的程序的其余部分隔离的 GUI,因此我可以在下面分享它。我还要补充一点,对于我创建此 GUI 的方式,我深表歉意。我不太擅长 GUI 的视觉方面,所以我使用了对我来说最简单的方法,但它丢失了很多带有边框布局的 JPanel。可能不是最好的,但它有效:)

这是我的代码:

package guitesting;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;



public class GUITesting

{

public static int tester = 0;
public static String resultString = null;
static JTextField tRDFI = new JTextField("RDFI Number Here",30);

public static void NOCGUI(){

String text = "<html>"
+ "This is where the entry detail will go"+
"<br><br>"
+"</html>";

JLabel RDFI = new JLabel("RDFI Number:");
JLabel DDA = new JLabel("DDA:");
JLabel TCode = new JLabel("Transaction Code: ");



tRDFI.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
resultString = tRDFI.getText();
}
});

JTextField tDDA = new JTextField("DDA Number Here",30);
JTextField tTCode = new JTextField("TCode Here",30);
JLabel label = new JLabel(text);

JPanel mainPanel = new JPanel();
JPanel fieldPanel = new JPanel();
JPanel textPanel = new JPanel();
JPanel northFieldPanel = new JPanel();
JPanel southFieldPanel = new JPanel();
JPanel tCodePanel = new JPanel();
JPanel RDFIPanel = new JPanel();
JPanel DDAPanel = new JPanel();

mainPanel.setLayout(new BorderLayout());
fieldPanel.setLayout(new BorderLayout());
textPanel.setLayout(new BorderLayout());
northFieldPanel.setLayout(new BorderLayout());
southFieldPanel.setLayout(new BorderLayout());
tCodePanel.setLayout(new BorderLayout());
RDFIPanel.setLayout(new BorderLayout());
DDAPanel.setLayout(new BorderLayout());

textPanel.add(label,BorderLayout.CENTER);
RDFIPanel.add(RDFI,BorderLayout.WEST);
RDFIPanel.add(tRDFI,BorderLayout.EAST);
tCodePanel.add(TCode,BorderLayout.WEST);
tCodePanel.add(tTCode,BorderLayout.EAST);
DDAPanel.add(DDA,BorderLayout.WEST);
DDAPanel.add(tDDA,BorderLayout.EAST);
northFieldPanel.add(RDFIPanel,BorderLayout.NORTH);
northFieldPanel.add(DDAPanel,BorderLayout.SOUTH);
southFieldPanel.add(tCodePanel,BorderLayout.NORTH);
fieldPanel.add(northFieldPanel,BorderLayout.NORTH);
fieldPanel.add(southFieldPanel,BorderLayout.SOUTH);
mainPanel.add(textPanel,BorderLayout.NORTH);
mainPanel.add(fieldPanel,BorderLayout.SOUTH);

String options[] = {"Confirm"};

int result = JOptionPane.showOptionDialog(null, mainPanel, "NOC Builder", JOptionPane.YES_OPTION,
JOptionPane.PLAIN_MESSAGE,null, options, options[0]);

if(result==0 && resultString.equals("A")){
System.out.println("pass");
}

}

public static void main(String args[]){

GUITesting.NOCGUI();



}

}

最佳答案

我认为 ActionListener 不是您想要的。仅当用户在文本字段具有焦点时按 Return 时才会调用它。

如果您想监听文本字段中的所有更改,请查看 DocumentListener .

textField.getDocument().addDocumentListener(documentListener);

但为什么不在对话框返回时引用实际的文本字段呢?这可能是最简单的解决方案。试试这个:

if (result == 0) {
System.out.println("tRDFI: " + tRDFI.getText());
System.out.println("tDDA: " + tDDA.getText());
System.out.println("tTCode: " + tTCode.getText());
}

关于java - 将 Action 监听器添加到带有 JTextFields 的 JOptionsPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34095410/

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