Tratando de resolver un problema utilizando la GUI, pero si me declaraciones son confusas

Muath:

Estoy tratando de resolver un proyecto, pero estoy atascado en un problema.

• El programa debe mostrar un menú que permite al usuario realizar las
siguientes operaciones (Nota: el uso GUI):
1. Añadir un nuevo cliente
2. Eliminar un cliente
3. Modificar la información de un cliente // esta opción debe mostrar un submenú como:
-------- 1. Cliente individual // modificar la información básica: teléfono # ...
Código:

 //Modify Customer
    if (actionEvent.getSource().equals(modifyCustomer)) {
        frame.dispose();
        frame = new JFrame();
        panel = new JPanel();

        individualCustomer = new JButton("Individual customer");
        individualCustomer.addActionListener(this);

        panel.setBorder(BorderFactory.createEmptyBorder(100, 100, 100, 100));
        panel.setLayout(new GridLayout(0, 1));
        panel.add(individualCustomer);

        frame.setTitle("General Distribution Center");
        frame.add(panel, BorderLayout.CENTER);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);

        //Individual Customer
        if (actionEvent.getSource().equals(individualCustomer)) {
            frame.dispose();
            System.out.println("Enter the new phone number: ");
            int updatedPhoneNumber = input.nextInt();
        }

Mi primer problema es: ¿Por qué si la siguiente afirmación es falsa ??

if (actionEvent.getSource().equals(individualCustomer)) {

Mi segundo problema es: Cuando la sentencia if es cierto .. por ejemplo, si el tipo i

if(true){
         frame.dispose();
         System.out.println("Enter the new phone number: ");
         int updatedPhoneNumber = input.nextInt();
     }

Se ejecuta este bloque inmediatamente después de la opción al cliente modifica selecciono. Sin mostrar al cliente la opción / botón individual que he creado aquí:

        individualCustomer = new JButton("Individual customer");
        individualCustomer.addActionListener(this);

Por favor, si usted no sabe la respuesta y tienen una mejor respuesta lógica para este problema proyecto cuota de ellos y voy a trabajar desde allí.

Aerodeslizador completa de anguilas:

Tienes una enorme ActionListener, uno que está tratando de hacer demasiadas cosas a la vez. Esa sentencia if-segundo nunca será cierto debido a la manera en que su código está cableada. Usted ha anidadas el caso de tal manera que si el exterior si es cierto (que permite que el interior si a alcanzar), el interior si va siempre ser falsa:

if (actionEvent.getSource().equals(modifyCustomer)) {
    // if we're here, then source will **never** be individualCustomer

    //..... code here

    // the if-test below will **always** be false
    if (actionEvent.getSource().equals(individualCustomer)) {
         // .... code here
    }
}

usted podría hacer si los de en serie:

if (actionEvent.getSource().equals(modifyCustomer)) {

    //.....

} else if (actionEvent.getSource().equals(individualCustomer)) {

    //.....

}

entonces todo funcionará bien.

Es mejor dar a cada JButton su propio ActionListener interna anónima para separar las preocupaciones

individualCustomer = new JButton("Individual customer");
individualCustomer.addActionListener(() -> {
    // button-specific listener code goes here
});

Con respecto a este código:

if(true){
     frame.dispose();
     System.out.println("Enter the new phone number: ");
     int updatedPhoneNumber = input.nextInt();
}

Parece que usted está tratando de mezclar la consola de programación lineal con escáner y println con interfaz gráfica de usuario basada en eventos, y que casi siempre está garantizada a fallar ya que los dos paradigmas no se mezclan bien. Palo con un paradigma, aquí, palo con la obtención de todas las entradas a través de la interfaz gráfica de usuario de una manera orientada a eventos, y eliminar todo el código de escáner basado en System.in.


Una última cosa, por favor, eche un vistazo en el uso de múltiples JFrames, buena / mala práctica?

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=341583&siteId=1
Recomendado
Clasificación