Панель не удаляется после открытия другой панели в Java-программе - PullRequest
1 голос
/ 05 марта 2019

Я делаю систему управления аптекой в ​​java, и я создал панель регистрации с помощью Window Builder. В этом Window Builder есть текст с надписью «нажмите здесь, чтобы войти в систему». Когда я нажимаю текст, он открывает панель входа, но не располагает панелью регистрации. Я просто хотел, чтобы кто-то показал мне, как расположить панель регистрации, когда я нажимаю на панель входа. Вот код, который я написал.

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.UIManager;
import java.awt.SystemColor;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
public class SignUp extends JFrame {

private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;

int xx;
int xy;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                SignUp frame = new SignUp();
                frame.setUndecorated(false);
                frame.setResizable(false);
                frame.setLocation(200, 10);
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    }

     public SignUp() {
    addMouseMotionListener(new MouseMotionAdapter() {
        @Override
        public void mouseDragged(MouseEvent e) {
            int x = e.getXOnScreen();
            int y = e.getXOnScreen();
            SignUp.this.setLocation(x-xx, y-xy);

        }
    });
    addMouseListener(new MouseAdapter() {
        @Override
        public void mousePressed(MouseEvent e) {
            xx=e.getX();
            xy=e.getY();
        }
        @Override
        public void mouseClicked(MouseEvent e) {
            SignUp frame = new SignUp();
            frame.setResizable(false);
            frame.setVisible(false);
            frame.dispose();
        }
    });
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 1000, 700);
    contentPane = new JPanel();
    contentPane.setForeground(Color.GREEN);
    contentPane.setBackground(Color.WHITE);
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    //contentPane.setUndecorated(true)
    contentPane.setVisible(true);
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JPanel panel = new JPanel();
    panel.setBackground(Color.GREEN);
    panel.setBounds(0, 0, 389, 681);
    contentPane.add(panel);
    panel.setLayout(null);

    JLabel lblNewLabel_3 = new JLabel("");
    lblNewLabel_3.setBounds(57, 182, 256, 256);
    panel.add(lblNewLabel_3);


     JLabel lblNewLabel_4 = new JLabel("Login by clicking here");
     lblNewLabel_4.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent arg0) {
            Login log = new Login();
            log.setResizable(false);
            log.show();
            log.setLocation(200, 10);
            log.setVisible(true);

            dispose();  
        }
        });


    lblNewLabel_4.setForeground(Color.WHITE);
    lblNewLabel_4.setFont(new Font("Arial", Font.BOLD, 17));
    lblNewLabel_4.setBounds(85, 604, 192, 20);
    panel.add(lblNewLabel_4);

    JButton btnNewButton = new JButton("Sign Up");
    btnNewButton.setForeground(Color.WHITE);
    btnNewButton.setBackground(new Color(0, 255, 0));
    btnNewButton.setBounds(519, 608, 436, 34);
    contentPane.add(btnNewButton);
    //Main_Page frame = new Main_Page();

    textField = new JTextField();
    textField.setBounds(519, 150, 426, 34);
    contentPane.add(textField);
    textField.setColumns(10);

    JLabel lblUsername = new JLabel("Username");
    lblUsername.setFont(new Font("Arial", Font.BOLD, 10));
    lblUsername.setBounds(519, 130, 60, 14);
    contentPane.add(lblUsername);

    textField_1 = new JTextField();
    textField_1.setBounds(519, 250, 426, 34);
    contentPane.add(textField_1);
    textField_1.setColumns(10);

    JLabel lblEmail = new JLabel("Email");
    lblEmail.setFont(new Font("Arial", Font.BOLD, 10));
    lblEmail.setBounds(519, 230, 46, 14);
    contentPane.add(lblEmail);

    textField_2 = new JTextField();
    textField_2.setBounds(519, 350, 426, 34);
    contentPane.add(textField_2);
    textField_2.setColumns(10);

    JLabel lblNewLabel = new JLabel("Password");
    lblNewLabel.setFont(new Font("Arial", Font.BOLD, 10));
    lblNewLabel.setBounds(519, 330, 60, 14);
    contentPane.add(lblNewLabel);

    textField_3 = new JTextField();
    textField_3.setBounds(519, 450, 426, 34);
    contentPane.add(textField_3);
    textField_3.setColumns(10);

    JLabel lblNewLabel_1 = new JLabel("Confirm Password");
    lblNewLabel_1.setFont(new Font("Arial", Font.BOLD, 10));
    lblNewLabel_1.setBounds(519, 430, 101, 14);
    contentPane.add(lblNewLabel_1);

    JLabel lblNewLabel_2 = new JLabel("New label");
    lblNewLabel_2.setBounds(583, 28, 284, 74);
    contentPane.add(lblNewLabel_2);
}
}

1 Ответ

0 голосов
/ 05 марта 2019

Вы создаете новый SignUp, устанавливаете его невидимым и утилизируете. Это бесполезно, потому что вы хотите скрыть (и, возможно, избавиться) от существующего , видимого SignUp. Вместо того, чтобы создавать новый, вам нужно вызвать соответствующие методы для существующего. Возможно, вы сможете достичь этого через источник MouseEvent, но в противном случае вам нужно будет найти какой-то другой способ, чтобы слушатель мог его получить.

Обновление

Более полный код, представленный в этом вопросе, ясно, что задействованный MouseListener является внутренним классом SignUp. Предположим, что экземпляр SignUp, который он намеревается разместить, всегда является собственным внешним экземпляром, он может просто вызывать методы для этого экземпляра (по-видимому) напрямую. Это относится к категории «какой-то другой способ для слушателя получить его».

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