JFrame显示为空白而不显示UI

时间:2018-10-27 09:37:29

标签: java swing intellij-idea jframe

我想过一段时间后打开MainWindow(我创建并添加了UI),但是Java改为打开空白的默认Jframe。在启动屏幕(Start)之后如何打开已经创建的窗口?

public class Start extends JFrame{
        private JPanel panel1;

        public static void main(String[] args) {

            JFrame frame = new JFrame("Starting");
            frame.setContentPane(new Start().panel1);
            frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

            frame.setExtendedState(JFrame.NORMAL);
            frame.setUndecorated(true);
            //frame.setAlwaysOnTop(true);
            frame.setVisible(true);

            /*Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
            frame.setLocation(dim.width/2-frame.getSize().width/2, dim.height/2-frame.getSize().height/2);*/

            frame.toFront();
            frame.pack();

            frame.setLocationRelativeTo(null);

            Timer timer = new Timer(1000, new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {

                    new MainWindows().setVisible(true);
                    frame.setVisible(false);

                    //System.exit(0);
                }
            });

            timer.start();

        }

MainWindows.java

public class MainWindows extends JFrame{

    private JPanel panel;



    public static void main(String[] args)
    {

        boolean clicked = false;


        JOptionPane.showConfirmDialog(null, "Це перша вершія гри. Будь ласка, закрийте всі програми, щоб уникнути помилок.", "Увага!", JOptionPane.YES_OPTION);


        JFrame frame2 = new JFrame("Flying");
        frame2.setContentPane(new MainWindows().panel);
        frame2.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

        frame2.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame2.setUndecorated(true);
        frame2.setAlwaysOnTop(true);
        frame2.setVisible(true);

        frame2.toFront();
        frame2.pack();

3 个答案:

答案 0 :(得分:1)

您的.space{ height:350px } .space2{ height:50px }类具有一个从未调用过的静态<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="navbar-collapse collapse" id="navbar10"> <ul class="navbar-nav nav-fill w-100"> <li class="nav-item"> <a class="nav-link" href="#">Homepage</a> </li> <li class="nav-item"> <a class="nav-link active" href="#button1">First Button</a> </li> <li class="nav-item"> <a class="nav-link active" href="#button2">Second Button</a> </li> <li class="nav-item"> <a class="nav-link active" href="#button3">Third Button</a> </li> <li class="nav-item"> <a class="nav-link active" href="#button4">4th Button</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Contact</a> </li> </ul> </div> <div class="space"></div> <div class="gallery-menu text-center row"> <div class="col-md-12"> <div class="button-group filter-button-group"> <div class="flex-container"> <button data-filter=".photo_b" id="button1">First Gallery</button> <button data-filter=".photo_d" id="button2">Second Gallery</button> <button data-filter=".photo_c" id="button3">Third Gallery</button> <button data-filter=".photo_a" id="button4">4th Gallery</button> <button class="active" data-filter="*" id="button5">All photos</button> </div> </div> </div> </div> <div class="space2">方法。看起来很像其中的代码应该改为构造函数。

答案 1 :(得分:1)

您在此程序中似乎有两种主要方法。我建议从MainWindows.java中删除main方法,并将代码从其中移到MainWindows构造函数中。这样可以确保在初始化新的MainWindows()对象时,应正确设置新JFrame中的所有内容。

MainWindows.java中的代码:

    public MainWindows()
{

    boolean clicked = false;


    JOptionPane.showConfirmDialog(null, "Це перша вершія гри. Будь ласка, закрийте всі програми, щоб уникнути помилок.", "Увага!", JOptionPane.YES_OPTION);


    JFrame frame2 = new JFrame("Flying");
    frame2.setContentPane(new MainWindows().panel);
    frame2.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

    frame2.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame2.setUndecorated(true);
    frame2.setAlwaysOnTop(true);
    frame2.setVisible(true);

    frame2.toFront();
    frame2.pack();

答案 2 :(得分:0)

我终于解决了。 frame2.setContentPane(panel);谢谢您的回答!