Добавление JFrame в JApplet

1

Можно ли добавить программу на JFrame в JApplet? Как я могу это сделать, когда я пытаюсь сделать это, как:

public class Test extends JApplet{
public void init(){
    JFrame frame=new JFrame(300,400);
    add(frame);
    frame.setVisible(true);
}

У меня возникла ошибка, когда я пытаюсь использовать appletviewer. Может кто-нибудь мне помочь?

  • 0
    catch ошибку (правильно: Exception ) и распечатать ее stack trace .
  • 0
    «Я получил ошибку, когда я пытаюсь использовать appletviewer» Я удивлен, учитывая, что предложение подразумевает, что это скомпилируется. Зачем кодировать апплет? Если это связано со спец. учителем, пожалуйста, обратитесь к ним Почему преподаватели CS должны прекратить преподавать Java-апплеты . Было бы разумнее запускать фрейм по ссылке, используя Java Web Start .
Теги:
swing
jframe
applet
japplet

3 ответа

3
Лучший ответ

Вы не можете добавить фрейм в апплет, но вы можете добавить апплет в фрейм:

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

public class AppletBasic extends JApplet
{
    /**
     * Create the GUI. For thread safety, this method should
     * be invoked from the event-dispatching thread.
     */
    private void createGUI()
    {
        JLabel appletLabel = new JLabel( "I'm a Swing Applet" );
        appletLabel.setHorizontalAlignment( JLabel.CENTER );
        appletLabel.setFont(new Font("Serif", Font.PLAIN, 36));
        add( appletLabel );
        setSize(400, 200);
    }

    @Override
    public void init()
    {
        try
        {
            SwingUtilities.invokeAndWait(new Runnable()
            {
                public void run()
                {
                    createGUI();
                }
            });
        }
        catch (Exception e)
        {
            System.err.println("createGUI didn't successfully complete: " + e);
        }
    }

    public static void main(String[] args)
    {
        JApplet applet = new AppletBasic();
        applet.init();

        JFrame frame = new JFrame("Applet in Frame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add( applet );
        frame.pack();
        frame.setLocationRelativeTo( null );
        frame.setVisible( true );

        applet.start();
    }
}
1

Используйте JInternalFrame вместо JFrame. Это решит вашу проблему.

1

Чтобы быть полным, ваш коммутатор должен заменить JFrame экземпляром JApplet! Это. JFrame - это окно верхнего уровня в обычной среде исполнения, JApplet - это верхний уровень во встроенной среде выполнения. Таким образом, ваш код должен выглядеть так:

public class Test extends JApplet {
  public void init() {
   JButton b = new JButton("my button");
   this.add(b);
  }
}

для исходного кода:

public class Test {
 public static void main(String []a) {
   JFrame f = new JFrame("my test");
   JButton b = new JButton("my button");
   f.add(b);
   f.setVisible(true);
  }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню