簡體   English   中英

從JFrame更改為JApplet

[英]Changing from JFrame to JApplet

我正在嘗試將使用JFrame制作的某些Java應用程序更改為JApplets,以便可以將它們放置在我也嘗試制作的網站上。 我只是想知道要在程序中更改哪些內容才能實現此目的。 這是其中一個程序的示例(我嘗試通過更改擴展名和某些屬性來運行該程序,但是在進程仍在運行時它消失了):

import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener; 
import javax.swing.*;

@SuppressWarnings("serial")
public class Snake extends JApplet//extends JFrame
{
    private Panel panel;
    Dimension x = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
    private final int SCALER = 25, LENGTH = (int) x.getWidth()/SCALER-1, 
                      HEIGHT = (int) x.getHeight()/SCALER-1;

public static void main(String[] args)
{
    new Snake();
}

public Snake()
{
    //setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(x);
    //setTitle("SNAKE");
    //setResizable(false);
    panel = new Panel(20,20,SCALER);
    add(panel, BorderLayout.CENTER);
    Handler handler = new Handler();
    addKeyListener(handler);
    setVisible(true);
}

private class Handler implements KeyListener
{
    public void keyPressed(KeyEvent e)
    {
        switch (e.getKeyCode())
        {
            case KeyEvent.VK_LEFT:
            panel.pass(270);
            break;
            case KeyEvent.VK_RIGHT:
            panel.pass(90);
            break;
            case KeyEvent.VK_UP:
            panel.pass(0);
            break;
            case KeyEvent.VK_DOWN:
            panel.pass(180);        
            break;
        }
    }

    public void keyReleased(KeyEvent e) 
    {

    }

    public void keyTyped(KeyEvent e) 
    {

    }
  }
}

使用此代碼,您可以同時擁有兩個版本(JFrame和JApplet)

public class Snake extends JApplet 
{
    public static void main(String[] args)
    {
        // JFrame
        JFrame frame = new JFrame();
        frame.setTitle("Snake");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Applet
        JApplet applet = new Snake();
        applet.init();

        // Insert the Applet into JFrame
        frame.getContentPane().add(applet);
        frame.pack();
        frame.setVisible(true);
    }
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM