JTabbedPane:在显示所选选项卡之前执行的操作

5 java swing jtabbedpane

JTabbedPane单击a中存在的某个面板时,我需要在开始时执行一些操作.比方说,我需要检查用户名和密码.只有当这些匹配时,才需要执行特定的面板操作.你能建议任何方法吗?

Ada*_*ski 8

不确定我完全理解你的问题,但我会做的事情如下:

  • 将ChangeListener添加到JTabbedPane以侦听第一个选项卡单击.
  • 发生ChangeEvent时使用SwingWorker在后台线程上执行登录.
  • 如果登录成功,请在Event dispatch线程上执行所需的UI操作.

例如:

    tabbedPane.addChangeListener(new ChangeListener() {
    private boolean init;

    public void stateChanged(ChangeEvent e) {
        if (!init) {                                        
            init = true;

            new SwingWorker<Boolean, Void>() {
                @Override
                protected void done() {
                    try {
                        boolean loggedIn = get();

                        if (loggedIn) {
                            // Success so perform tab operations.
                        }
                    } catch (InterruptedException e1) {
                        e1.printStackTrace(); // Handle this.
                    } catch (ExecutionException e1) {
                        e1.printStackTrace(); // Handle this.
                    }
                }

                protected Boolean doInBackground() throws Exception {
                    // Perform login on background thread.  Return true if successful.
                    return true;
                }
            }.execute();
        }
        }
    });
Run Code Online (Sandbox Code Playgroud)