Почему мой JFrame не отображается в веб-приложении Java? - PullRequest
2 голосов
/ 16 мая 2011

У меня есть игровое приложение, которое я буду запускать в веб-браузере с помощью тега.Эта программа имеет JFrame, который отображает пару вкладок, позволяющих перемещаться по всей программе.Когда я запускаю программу локально, она будет работать нормально, отображая JFrame и работая полностью.Однако, когда я загружаю его на хост и просматриваю его ссылку, JFrame не будет отображаться ..

Я искал около 3 часов и просто не смог предоставить правильные ключевые слова для моей сиутации.Все, что я могу получить в результатах, это то, что JFrame вообще не отображается ни локально, ни в веб-приложении.

Вот как выглядит клиент, когда я запускаю его локально из того же .jar:

Picture - Local

Так выглядит клиент в веб-браузере (пробовал IE, FF и Chrome):

Picture - Web

Applet.java:

public class Client extends RSApplet {

    public static void main(String args[]) {
        try {
            instance = new Client();
            new UserInterface(args);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

}

GUI.java

public class GUI extends Applet implements ActionListener, WindowListener, FocusListener {

    public UserInterface(String args[]) {
        try {
        /* ------------------------------------------------------------------------ */
        /* Metal                                                                    */
        /*  UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");    */
        /* System Look                                                              */
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        /* ------------------------------------------------------------------------ */
            initGUI();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public void initGUI() {
        try {
            JFrame.setDefaultLookAndFeelDecorated(true);
            JPopupMenu.setDefaultLightWeightPopupEnabled(false);
            frame = new JFrame(frameTitle);
            frame.setLayout(new BorderLayout());
            Image icon = Toolkit.getDefaultToolkit().getImage(iconDir);
            frame.setIconImage(icon);
            gamePanel = new JPanel();
            gamePanel.setLayout(new BorderLayout());
            gamePanel.add(this);
            gamePanel.setPreferredSize(new Dimension(850, 600));
            frame.getContentPane().add(gamePanel, BorderLayout.CENTER);
            frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
            frame.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    if (loggedIn == false) {
                        System.exit(0);
                    } else {
                        if (showMessage("Are you sure you want to close the game?") == true) {
                            System.exit(0);
                        } else return;
                    }
                }
            });
            initMenuBar();
            frame.pack();
            frame.setVisible(true);
            frame.setResizable(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void initMenuBar() {
        menuBar = new JMenuBar();
        /** File **/
        fileMenu = new JMenu("File");
        String[] fileMenuItems = {
            "Quit"
        };
        menuBar.add(fileMenu);
        /** Quick Links **/
        linksMenu = new JMenu("Quick Links");
        String[] linksMenuItems = {
            "Home", "News", "Donate"
        };
        menuBar.add(linksMenu);
        frame.getContentPane().add(menuBar, BorderLayout.NORTH);
    }

}

1 Ответ

3 голосов
/ 16 мая 2011

Вы пытаетесь разместить приложение на веб-странице, я имею в виду запуск в качестве веб-приложения.Если да, то вам нужен апплет или JApplet, а не фрейм.Фрейм работает нормально, но чтобы добавить его на веб-сайт, вам нужно сделать его апплетом.Воспользуйтесь ссылками ниже ..

Класс JApplet для se6- http://download.oracle.com/javase/6/docs/api/javax/swing/JApplet.html Учебник по JApplet / Applet - http://download.oracle.com/javase/tutorial/uiswing/components/applet.html

Удачи

...