gpt4 book ai didi

java - Netbeans GUI 将文本字段值传递给应用程序中而不是 View 中定义的操作

转载 作者:行者123 更新时间:2023-12-01 15:40:04 26 4
gpt4 key购买 nike

我在 Netbeans 中创建了一个简单的应用程序,它包含一些用于用户输入的文本字段和一个按钮,我已通过 Netbeans 界面将操作与按钮关联起来,但我决定在应用程序而不是 View 中定义操作以便遵循 MVC 的一些概念。

该操作工作正常,每次单击按钮时我都可以打印出控制台。

但是为了执行我想要的操作,我需要 jTextFields 中包含的值!

如何做到这一点?这是 TestApp.java 中的代码:

@Action
public void ClickedOnButton() {
System.out.println("Clicked ok");
System.out.println("Will now attempt to read notes.ini");

ReadNotesFile();
}

这是 TestView.java 中的代码:

javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(tpa_fixer.TPA_FixerApp.class).getContext().getActionMap(TPA_FixerView.class, this);
jButton1.setAction(actionMap.get("ClickedOnButton")); // NOI18N

最佳答案

您尝试过什么,但效果如何?让 JTextField 显示文本的标准方法是对其调用 setText() 。你尝试过这样做吗?

另外,

  • 您是否已完成有关这些概念(包括使用文本组件、JButton 和 ActionListener)的 Swing 教程?
  • 您在这些尝试中发现任何错误吗?如果是这样,请将它们发布在这里。
  • 您的“控制”类(包含监听器代码的类)是否与您的“ View ”或 GUI 类分开?如果是这样,控件是否有有效的 View 引用?

编辑
您声明:

I don't want to set the text in the jTextFields, I want to get the values out of them and use it in the method that gets run when I click on the button. I can't see how to do this unless I can pass arguments somehow within the body of the action definition in the View class.

在这种情况下我做了什么,我需要从 gui 字段中提取信息以便在其他类中进行操作:

  • 您可以为每个字段提供一个关联的公共(public) getText() 方法,然后使用控件对 View 对象的引用来调用这些方法。例如,假设 View 有一个 nameField JTextField,那么我会给它一个 getNameFieldText() 方法,该方法返回 nameField.getText();
  • 如果您有许多这样的字段,那么仅使用一个 getText 方法可能会更有效,但允许它使用一个参数来让您选择从中提取文本的字段。为了使这项工作高效进行,我有时会为 GUI 提供一个 HashMap,然后在 String 键中传递控制权,以允许 getText 方法获取正确的 JTextfield、获取其文本并返回它。我经常使用与 JTextField 关联的 JLabels 相同的字符串作为我的关键字符串。

关于java - Netbeans GUI 将文本字段值传递给应用程序中而不是 View 中定义的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8206657/

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