微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅在成功登录数据库后,才打开JFrame使用Eclipse?

如何解决仅在成功登录数据库后,才打开JFrame使用Eclipse?

只需在Home类中创建一个将其JFrame设置为可见的方法即可:

public void setJFrameVisible(boolean visible)
{
    frame.setVisible(visible);
}

然后,假设您的Home类实例称为“ home”,那么您要做的就是:

home.setJFrameVisible(true);

让我添加更多背景信息。扩展JFrame时,该类将继承JFrame类的所有方法/属性。这就是为什么扩展JFrame时只能调用obj.setVisible(true)的原因,因为您的类继承了JFrame类的setVisible方法。您拥有的是一个包含JFrame的类,因此您必须在内部JFrame而不是该类上调用setVisible方法

解决方法

我要尝试做的是仅在连接数据库中验证了登录信息之后,才从登录屏幕打开主应用程序。

到目前为止,我使用Eclipse:

database.java :使用UCanAccess连接到MS Access数据库。(成功)

login.java :扩展JFrame的登录窗口。输入用户名和密码后,将使用数据库进行验证。(成功)

Home.java :主应用程序窗口,我只希望使用正确的用户名和密码进行访问。不扩展JFrame,但其中包含JFrame。

现在,我已经能够进行设置,以便如果输入的用户名和密码正确,则会弹出一个窗口,提示“成功登录”。但是,如何进行设置,以便成功登录后打开Home.java?

我已经看过: 打开一个新的JFrame-我已经用home尝试了setVisible,但是Eclipse返回一个错误,说要在Home中创建setVisible方法…我认为这应该是一个自动控件?尝试创建该方法后,只会出现更多问题。

JFrame打开另一个 JFrame-
建议添加actionListener,然后将其设置为visible ..我已经完成了:public voidactionPerformed(ActionEvent e) {this.setVisible(false);newHome().setVisible(true);但是Eclipse根本没有打开登录窗口。最初,我认为可能是因为我的成功消息位于actionListener中,但是即使将其删除也仍然无法正常工作。

单击按钮后,从Java类和“
打开”窗口中调用Jframe-我的唯一结论是,这不起作用,因为Home.java不扩展JFrame?但是,我通读其他资料,使用“ extends JFrame”不好吗?

我想我也不了解类中“扩展JFrame”与新JFrame之间的区别?我一直在独自学习Java,而且还不熟悉GUI创建。也许我缺少一些非常明显的东西,但是我找不到解决方案。

有任何想法吗?谢谢

为了给出一个想法,我的Home.java像这样开始:

public class Home {

    private JFrame frame;
    private JTable data;
    private JTextField Column1;
    private JTextField Column2;
    private JTable table;

    // Launch the application.

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Areas window = new Areas();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    // Create the application.

    public Home() {
        initialize();
    }

    //Initialize the contents of the frame.

    private void initialize() {


        frame = new JFrame();
        frame.setBounds(100,100,697,518);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。