Java: дождитесь первого кадра при извлечении данных из второго кадра, затем при нажатии на кнопку закрытия и управление также перейдет к первому кадру - PullRequest
1 голос
/ 24 марта 2012

В моем приложении есть два кадра.В основном кадре есть кнопка «Сервер».Когда я нажимаю на кнопку «Сервер», открывается второй кадр, и после ввода некоторых деталей, когда я нажимаю на кнопку «Отправить», которая находится на втором кадре, этот кадр закрывается, и контроль снова переходит к кнопке «Сервер», где я называю этот кадр так,Я сделаю все остальное из задачи.И еще одна вещь, которую я хочу в своем приложении, когда второй кадр открыт, тогда в первом кадре нет активности.

Мой первый кадр: кадр JFrame;

Inв этом кадре есть одна серверная кнопка: JButton btnSaveOnServer;

В addActionListener этой кнопки я пишу этот код для открытия второго кадра:

btnSaveOnServer.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                    ServerClass window = new ServerClass();
                    window.serverFrame.setVisible(true);
            }
        });

Код для второгоКадр:

public class ServerClass{
public JFrame serverFrame;
private JLabel userName;
private JLabel password;
private JTextField textUsername;
private JPasswordField textPassword;
private JButton btnOk;
protected ServerClass(){
try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

        serverFrame = new JFrame("Server Entry Token");

        serverFrame.setBounds(500, 280, 335, 250);
        serverFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        serverFrame.getContentPane().setLayout(null);

        font = new Font("Arial", Font.BOLD, 15);

        userName = new JLabel("Username");
        userName.setBounds(4, 40, 100, 15);
        userName.setFont(font);

        password = new JLabel("PassKey");
        password.setBounds(4, 69, 100, 15);
        password.setFont(font);

        textUsername = new JTextField();
        textUsername.setBounds(110, 35, 200, 25);
        textUsername.setFont(font);


        textPassword = new JPasswordField(10);
        textPassword.setBounds(110, 65, 200, 25);
        textPassword.setEchoChar(ch);

        btnOk = new JButton("Submit");
        btnOk.setBounds(30, 170, 85, 25);

        serverFrame.add(userName);
        serverFrame.add(password);
        serverFrame.add(textUsername);
        serverFrame.add(textPassword);
        serverFrame.add(btnOk);

        btnOk.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                if (!textUsername.getText().equals("")
                        && !textPassword.getText().equals("")) {

                    tArea.append("Username:\t"+textUsername.getText()+"\n");
                    tArea.append("Pass:\t"+textPassword.getText()+"\n");
//tArea is the area in first frame where I display the entered data.
            serverFrame.dispose();      
                }

            }
        });
}

}

Здесь я добавляю код serverFrame.dispose (); в кнопке «Отправить», которая закрывает кадр, но элемент управления не попадает в первый кадр.Итак, моя проблема:

  1. Как отключить или отключить мой первый кадр, когда второй кадр открыт.
  2. в моем коде я вызываю второй кадр в кнопке «сервер» первого кадра,Это способ записи, чтобы вызвать второй кадр в первый кадр?
  3. как я закрываю второй кадр (после нажатия кнопки отправки), чтобы кадр закрылся и управление перешло к кнопке «Сервер» первого кадра.

1 Ответ

3 голосов
/ 24 марта 2012

1) In my application two frame is there

не используйте два JFrames , это невозможно без использования (JNI or JNA), эти контейнеры не реализуют parent,есть тяжелая работа, передвигаться один JFrame toFront() / toBack() / реальный FocusRecycle жестокая шутка

2) использовать JDialog , с setModal или ModalityType,

3) простой ваниль JOptionPane - лучший способ сделать это,

4) JFrame / JDialog / JWindow не реализует finalize(), тогда не имеет значения, еслиВы звоните на setVisible(false) или dispose()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...