【问题标题】:Java Object Oriented function calling between classes类之间的Java面向对象函数调用
【发布时间】:2012-12-08 18:23:22
【问题描述】:

我是 OOD 的新手,正在从事学术项目。 我在编程时遇到了问题。

场景是我有一个主类,我在其中创建了一个“登录”类的对象并调用它的函数。

现在在“登录”类函数中,我创建了一个 jFrame 类的对象来显示登录视图,用户在其中输入登录信息并按下登录按钮。

现在我希望当用户按下登录按钮时,我应该将该信息传递给我的“登录”类中的身份验证函数。

问题是我如何调用该函数(它是一个非静态函数),并根据无效信息调用 jFrame 类的函数以显示错误消息。

我想在我的项目中调用这个函数。

【问题讨论】:

  • 您不会在 Java 中“传递消息”。 ;)
  • 我是java新手,所以我写了消息传递/函数调用...编辑了它
  • 阅读the swing tutorial。真的。
  • 我猜这与 swing library 无关。它是一个 OOP 概念.. 我只是使用该库以图形方式查看
  • 如果你想在不学习和理解它的工作原理以及背后的基本 OO 概念的情况下使用 Swing,那么你注定要惨败。

标签: java oop class function-calls message-passing


【解决方案1】:

也许您需要重新设计您的程序。登录类不应创建 JFrame。让登录类专注于验证用户及其相关功能。所以是这样的:

  public class Login{

      public boolean authenticate(String uname, String pword){
           return .......
      }

  }

当你需要使用Login的函数时,你可以实例化它并调用该函数。例如,您可以创建一个 JFrame,提示用户输入用户名和密码并在按钮的操作中:

         loginBtn.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e){

                      Login login = new Login();
                      if(login.authenticate(txtUname.getText(), txtPWord.getText())){
                              //display success on JFrame
                      }else{
                              //display failure on JFrame
                      }
                }
          });

其中 txtUname 和 txtPWord 可能是 JFrame 上的 2 个 JTextField,而 lginBtn 可能是 JFrame 上的一个按钮。

如果您需要在其他地方执行相同的功能,则再次实例化 Login 并调用该功能。

【讨论】:

  • 感谢您的帮助.. 另一个问题...现在如果我想在身份验证函数中调用 view 的 showerror 消息,我应该创建该类的另一个对象吗?我应该成功创建新视图的对象吗?然后如何隐藏以前的视图,因为现在我没有它的对象..
  • 既然你正在尝试学习OOP,那么你必须明白每个班级应该只负责一件事。您不应在 Login 类的身份验证功能中向用户显示任何内容。而只是专注于验证用户。所有的显示错误逻辑都应该放在各种视图类中,比如你的 JFrame。
  • 所以你能提出给定场景的解决方案吗?如果我必须显示错误或成功隐藏当前视图并创建一个新视图,我该怎么办?
  • 这发生在我发布的代码中按钮的 actionListener 内部。您可以隐藏 JFrame 或创建一个新的 JFrame 或在该 if 语句中做任何您喜欢做的事情。这样,如果您在其他地方重用 Login 类,那么您可以决定对失败的身份验证做出不同的反应。
  • 但是我不能在那个 JFrame 中做任何逻辑,比如 if/else,这就是业务层的用途???不是吗?
【解决方案2】:

这是How-to-create-a-login-form-in-javax.swing的一个很好的工作示例

Java Beginner Swing的挥杆教程链接

【讨论】:

  • 大声笑,这不是我问的......我问我如何将一个类的函数称为与它无关的 jFrame 函数?
  • 没什么好笑的。我已经给出了一些链接。这里已经给出了答案。如果您遇到任何错误,您必须发布您的代码。
  • 我没有收到错误,您提供的链接不相关
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多