2015-03-07 2 views
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

Пожалуйста, не начинайте имена переменных с помощью capitals – TameHog

+0

И я не думаю, что это возможно из-за функций безопасности Java. – TameHog

+0

Используйте CardLayout для переключения между видами – MadProgrammer

ответ

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 ... также, как вы получаете текущее представление, прикрепленное к собственному узлу в контейнере браузера .... – MadProgrammer