How to open new applet window from a applet

前端 未结 2 1079
小蘑菇
小蘑菇 2020-12-11 05:51

how can i open a new applet window from a applet itself?

相关标签:
2条回答
  • 2020-12-11 06:13

    To open a new Java window (JFrame) from an applet, see the following extract from the Java tutorial:

    //1. Create the frame.
    JFrame frame = new JFrame("FrameDemo");
    
    //2. Optional: What happens when the frame closes?
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    //3. Create components and put them in the frame.
    //...create emptyLabel...
    frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
    
    //4. Size the frame.
    frame.pack();
    
    //5. Show it.
    frame.setVisible(true);
    

    To open a new browser window which also contains an applet showDocument(URL, "_blank"):

    URL url = new URL(getCodeBase().getProtocol(),
                          getCodeBase().getHost(),
                          getCodeBase().getPort(),
                          "/next.html");
    getAppletContext().showDocument(url, "_blank");
    
    0 讨论(0)
  • 2020-12-11 06:25
    package com.ashok.test;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.GridLayout;
    import java.awt.Insets;
    import java.awt.image.BufferedImage;
    
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JToolBar;
    import javax.swing.SwingConstants;
    import javax.swing.SwingUtilities;
    import javax.swing.border.EmptyBorder;
    import javax.swing.border.LineBorder;
    
    public class ChessBoardWithColumnsAndRows {
    
        private final JPanel gui = new JPanel(new BorderLayout(3, 3));
        private JButton[][] chessBoardSquares = new JButton[8][8];
        private JPanel chessBoard;
        private final JLabel message = new JLabel(
                "Chess Champ is ready to play!");
        private static final String COLS = "ABCDEFGH";
    
        ChessBoardWithColumnsAndRows() {
            initializeGui();
        }
    
        public final void initializeGui() {
            // set up the main GUI
            gui.setBorder(new EmptyBorder(5, 5, 5, 5));
            JToolBar tools = new JToolBar();
            tools.setFloatable(false);
            gui.add(tools, BorderLayout.PAGE_START);
            tools.add(new JButton("New")); // TODO - add functionality!
            tools.add(new JButton("Save")); // TODO - add functionality!
            tools.add(new JButton("Restore")); // TODO - add functionality!
            tools.addSeparator();
            tools.add(new JButton("Resign")); // TODO - add functionality!
            tools.addSeparator();
            tools.add(message);
    
            gui.add(new JLabel("?"), BorderLayout.LINE_START);
    
            chessBoard = new JPanel(new GridLayout(0, 9));
            chessBoard.setBorder(new LineBorder(Color.BLACK));
            gui.add(chessBoard);
    
            // create the chess board squares
            Insets buttonMargin = new Insets(0,0,0,0);
            for (int ii = 0; ii < chessBoardSquares.length; ii++) {
                for (int jj = 0; jj < chessBoardSquares[ii].length; jj++) {
                    JButton b = new JButton();
                    b.setMargin(buttonMargin);
                    // our chess pieces are 64x64 px in size, so we'll
                    // 'fill this in' using a transparent icon..
                    ImageIcon icon = new ImageIcon(
                            new BufferedImage(64, 64, BufferedImage.TYPE_INT_ARGB));
                    b.setIcon(icon);
                    if ((jj % 2 == 1 && ii % 2 == 1)
                            //) {
                            || (jj % 2 == 0 && ii % 2 == 0)) {
                        b.setBackground(Color.WHITE);
                    } else {
                        b.setBackground(Color.BLACK);
                    }
                    chessBoardSquares[jj][ii] = b;
                }
            }
    
            //fill the chess board
            chessBoard.add(new JLabel(""));
            // fill the top row
            for (int ii = 0; ii < 8; ii++) {
                chessBoard.add(
                        new JLabel(COLS.substring(ii, ii + 1),
                        SwingConstants.CENTER));
            }
            // fill the black non-pawn piece row
            for (int ii = 0; ii < 8; ii++) {
                for (int jj = 0; jj < 8; jj++) {
                    switch (jj) {
                        case 0:
                            chessBoard.add(new JLabel("" + (ii + 1),
                                    SwingConstants.CENTER));
                        default:
                            chessBoard.add(chessBoardSquares[jj][ii]);
                    }
                }
            }
        }
    
        public final JComponent getChessBoard() {
            return chessBoard;
        }
    
        public final JComponent getGui() {
            return gui;
        }
    
        public static void main(String[] args) {
            Runnable r = new Runnable() {
    
                @Override
                public void run() {
                    ChessBoardWithColumnsAndRows cb =
                            new ChessBoardWithColumnsAndRows();
    
                    JFrame f = new JFrame("ChessChamp");
                    f.add(cb.getGui());
                    f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                    f.setLocationByPlatform(true);
    
                    // ensures the frame is the minimum size it needs to be
                    // in order display the components within it
                    f.pack();
                    // ensures the minimum size is enforced.
                    f.setMinimumSize(f.getSize());
                    f.setVisible(true);
                }
            };
            SwingUtilities.invokeLater(r);
        }
    }
    
    0 讨论(0)
提交回复
热议问题