Java Swing, Изменение окна Java Swing, но появляется пустой экран.При запуске каждой программы отдельно, каждая работает нормально - PullRequest
0 голосов
/ 13 февраля 2019

Я проектирую экран входа в систему и экран главного меню на Java с использованием Java Swing.Проблема, которую я получаю, состоит в том, что, когда логин правильный, я получаю пустое окно свинга Java, когда я уже разработал главное меню.

Я только начал изучать Java, поэтому не совсем разбираюсь в этом.

Я проектирую фрейм самостоятельно, то есть я не использую интерфейс GUI, все кнопки и текстовые поля выполненывручную.

Это код входа в систему.

package loginapp;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Login_App extends JFrame {

    public static void main(String[] args) {


JFrame frame = new JFrame("Mo Garage Login");
        //frame setup
        frame.setSize(500, 600);
        frame.setVisible(true);

        //Label and Text boxes

        JLabel usernamelbl = new JLabel("Username");
        usernamelbl.setBounds(100,100, 100,20);
        frame.add(usernamelbl);
        frame.setLayout(null);
        frame.setVisible(true);


        JLabel passwordlbl = new JLabel("Password");
        passwordlbl.setBounds(100,200,100,20);
        frame.add(passwordlbl);
        frame.setLayout(null);
        frame.setVisible(true);



        JTextField username = new JTextField();
        username.setBounds(200,100,100,20);
        frame.add(username);
        frame.setLayout(null);//using no layout managers 
        frame.setVisible(true);



        JPasswordField pass = new JPasswordField();
        pass.setBounds(200,200,100,20);
        frame.add(pass);
        frame.setLayout(null);
        frame.setVisible(true);



        //Buttons

        JButton log=new JButton("Login");
        log.setBounds(200,500,100,40);

        frame.add(log);
        frame.setLayout(null);//using no layout managers  
        frame.setVisible(true);
        //login button action
        log.addActionListener(new ActionListener() {
        public void actionPerformed (ActionEvent arg0) {

            String uname=username.getText();
            String passwd=pass.getText();

            if (uname.equals("") && passwd.equals(""))
            {
                JOptionPane.showMessageDialog(frame, "Login Successfull");

                MainMenu mainmenu =new MainMenu();

                mainmenu.setVisible(true);

                frame.setVisible(false);

            }
            else {
                JOptionPane.showMessageDialog(frame, "Incorrect Credentials");
            }


        }
        }
    );

        JButton clear=new JButton("Clear");
        clear.setBounds(50,500,100,40);

        frame.add(clear);
        frame.setLayout(null);
        frame.setVisible(true);
        //clear button action

        clear.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent arg0) {

                username.setText("");
                pass.setText("");

            }
        }
        );

    }


}

Это код моего главного меню.

package loginapp;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;


public class MainMenu extends JFrame {

    public static void main(String[] args) {
    JFrame frame= new JFrame("Main Menu");
    frame.setSize(500,600);
    frame.setVisible(true);

    JButton client= new JButton("Add new Client");
    client.setBounds(200,100,120,30);
    frame.add(client);
    frame.setLayout(null);
    frame.setVisible(true);

    JButton Mod= new JButton("Update Database");
    Mod.setBounds(190,200,140,30);
    frame.add(Mod);
    frame.setLayout(null);
    frame.setVisible(true);

    JButton info= new JButton("Information");
    info.setBounds(200,300,120,30);
    frame.add(info);
    frame.setLayout(null);
    frame.setVisible(true);

    JButton exit= new JButton("Quit");
    exit.setBounds(200,400,120,30);
    frame.add(exit);
    frame.setLayout(null);
    frame.setVisible(true);
}
}

Я пробовал разные способы, но не смог его найти.Помогите, пожалуйста.Спасибо.

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

В вашем классе Login_App, в методе actionPerformed() вы вызываете конструктор класса MainMenu примерно так ...

MainMenu mainmenu =new MainMenu();

Однако класс MainMenu не имеетКонструктор - по крайней мере, не в коде, который вы разместили.Вы строите графический интерфейс в методе main() класса MainMenu.Поэтому я хотел бы предложить самое простое решение - на основе размещенного вами кода - изменить код в методе actionPerformed() класса Login_App.Замените показанную выше строку на ...

MainMenu.main(new String[]{});
0 голосов
/ 14 февраля 2019

в то время как каждый комментарий был абсолютно правильным и полезным, но вашего вопроса не было ни в одном !! Ваша задача состоит в добавлении Component к MainMenu объекту .Короче говоря, скопируйте код дырки main из MainMenu и поместите его в другой метод, назовем его go public void go() и заменим строку: -

JFrame frame= new JFrame("Main Menu");

на

this.setTitle("MainMenue");

и замените любую ссылку на объект frame на ключевое слово this.

0 голосов
/ 13 февраля 2019

Попробуйте вызвать метод revalidate () в начале actionPerformed для вашего логина.Это перезагрузит кадр.

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