gpt4 book ai didi

java - 如何在Java swing中的选项卡式 Pane 之间共享数组(列表)/变量?

转载 作者:行者123 更新时间:2023-11-30 05:10:30 25 4
gpt4 key购买 nike

我一直在尝试做“问题标题”。这是我当前的代码:

Main.java

import java.awt.*;
import javax.swing.*;

public class Main {

public static void main(String[] args) {

JFrame f= new JFrame ("My Frame");
f.setDefaultCloseOperation (JFrame .EXIT_ON_CLOSE);

JTabbedPane tp = new JTabbedPane();
User user = new User();
tp.addTab("Register", new Register(user));
tp.addTab("Process", new Process(user));

f.add(tp);
f.pack();
f.setVisible(true);
}

}

注册.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Register extends JPanel {
/*
The code too long, but what this class does is, display textfields:
username, password and email address
And there is a submit button, when press, it will update the process pane
*/
}

如何将用户名密码和电子邮件传递给Process.java(Jpanel)?

[我是java新手,没有编程背景]

最佳答案

正如我所看到的,您在RegisterProcess 之间共享user。所以问题是当user中的数据更新时如何刷新Process。您可以在User 或“Register”上创建监听器。恕我直言,“注册”上的监听器更加优雅。

注册监听器:

public interface RegisterListener {
void userRegistered(User user);
}

注册:

public void addRegisterListener(RegisterListener listener) {
//add listener to some collection.
}

//Call this method on Submit button press
protected void fireRegistered() {
//iterate over collection of listeners and on each do:
listener.userRegistered(user);
}

流程:

Process implements RegisterListener {
public void userRegistered(User user) {
refreshView();
}
}

在主要部分:

Register register = new Register(user);
Process process = new Process();
register.addRegisterListener(process);

因此,当用户注册时,应该通知进程,并且它应该在监听器方法的 user 参数中接收所有必要的数据。

关于java - 如何在Java swing中的选项卡式 Pane 之间共享数组(列表)/变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3540992/

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