Netbeans GUI将文本字段值传递给App中未在View中定义的操作

时间:2011-11-21 02:31:35

标签: java model-view-controller user-interface netbeans desktop-application

我在Netbeans中创建了一个简单的应用程序,它包含一些用于用户输入的文本字段和一个按钮,我通过Netbeans界面将操作与按钮相关联,但我决定在应用程序中定义操作而不是视图以便遵循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

1 个答案:

答案 0 :(得分:1)

你尝试了什么,它是如何工作的?获取JTextField显示文本的标准方法是在其上调用setText()。你试过这个吗?

此外,

  • 您是否浏览过有关这些概念的Swing教程,包括使用文本组件,JButtons和ActionListeners?
  • 您是否在这些尝试中看到任何错误?如果是这样,请将它们发布在这里。
  • 您的“控件”类(具有侦听器代码的类)是否与您的“视图”或GUI类分开?如果是,控件是否有一个有效的参考来查看?

修改
你说:

  

我不想在jTextFields中设置文本,我想从中获取值并在我点击按钮时运行的方法中使用它。我无法看到如何做到这一点,除非我可以在View类的动作定义的主体内以某种方式传递参数。

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

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