Как разделить массив (список) / переменные между панелями с вкладками в Java Swing? - PullRequest
1 голос
/ 22 августа 2010

Я пытался сделать "название вопроса". Вот мой текущий код:

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);
}

}

Register.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 и не имею опыта программирования]

1 Ответ

2 голосов
/ 22 августа 2010

Как я вижу, вы делите user между Register и Process.Таким образом, проблема заключается в том, как обновить Process при обновлении данных в user.Вы можете создать слушателя на User или на «Регистрация».ИМХО слушатель на 'Register' более элегантен.

RegisterListener:

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

Register:

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 метода слушателя.

...