Нажмите кнопку, чтобы открыть другой апплет

1

Я хочу вызвать другой апплет, нажав кнопку; тогда старый апплет будет закрыт или перезагружен в новый апплет.

У моего прослушивателя событий ничего нет.

public class ConImage extends JApplet implements ActionListener {
    Button btn;
    Applet second;

    public void init()
    {
        setSize(1600,900);
        setLayout(null);
        btn=new Button("Replace with other applet");

        add(btn);
        btn.addActionListener(this);
    }


    public void paint(Graphics g)
    {
        super.paint(g);

        btn.setLocation(100, 100);
        btn.setSize(100, 50);            
    }

    public void actionPerformed(ActionEvent e)
    {   second=null;
        second= getAppletContext().getApplet("SecondClass");
        if (second!=null)
        {
            if(e.getSource()==Time)
            {
                SecondClass ma= (SecondClass) second;

            }
        }
    }
}
  • 0
    Пожалуйста, не начинайте имена переменных с заглавных букв
  • 0
    И я не думаю, что это возможно из-за функций безопасности Java.
Показать ещё 3 комментария
Теги:
applet

1 ответ

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

Я уверен, что это невозможно из-за системы безопасности Java. Лучший способ сделать так, чтобы он имел мастер-класс, который имеет массив JApplet. На этом главном апплете я бы создал метод, который устанавливает видимый апплет из массива, вызывает init() и когда запрашивается рендер, вызовите paint() этого апплета.

Вот так:

public class MasterApplet extends JApplet {

private int index = 0;
private JApplet[] applets;

public void init(){
    JApplet appletA = new AppletA();
    JApplet appletB = new AppletB();
    applets = new JApplet[]{appletA, appletB};
    setViewing(index);
}

public void paint(Graphics g){
    applets[index].paint(g);
}

public void setViewing(int idex){
    index = idex;
    applets[idex].init();
    revalidate();
    repaint();
}

В значительной степени, если вы хотите изменить апплет, добавьте его в массив апплетов, а затем вызовите setViewing() с индексом этого апплета.

  • 0
    Или просто используйте CardLayout ... также, как вы привязываете текущее представление к собственному узлу в контейнере браузера ...

Ещё вопросы

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